Professional Documents
Culture Documents
User Guide
1. Installing Artifactory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 OS Service or Standalone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Installing on UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2 Installing on Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.3 Standalone Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 RPM Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Deployment on Other Servlet Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.1 Deploying the WAR File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.2 Deploying on JBoss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4.3 Deploying on IBM Websphere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5 Running Behind HTTP Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5.1 Running Behind Apache HTTPd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5.2 Running Behind nginx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.6 Changing the Default Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6.1 Running Artifactory on MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.6.2 Running Artifactory on Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.6.3 Running Artifactory on PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.7 Upgrading Artifactory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2. Administering Artifactory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1 General Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2 Managing Repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2.1 Understanding Repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2.2 Configuring Repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.2.3 Local and Remote Repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2.4 Local Repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2.5 Remote Repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.2.5.1 Managing Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.2.5.2 Handling Offline Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.2.5.3 Handling Checksums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.2.5.4 Going Through Proxies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.2.5.5 Advanced Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.2.5.6 Importing Shared Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.2.6 Virtual Repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.3 Managing Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.3.1 Managing Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.3.1.1 Recreating the Default Admin Account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.3.2 Managing Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.3.3 Managing Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.3.4 Managing Security with LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.3.5 Centrally Secure Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.3.6 Access Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.4 Managing Backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.5 Importing and Exporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
2.6 Mail Server Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.7 Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.7.1 Global Configuration Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.7.2 Security Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.7.3 System Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.8 Exposing Maven Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2.9 Clustering Artifactory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
2.10 The Artifactory Log Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.11 System Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2.12 Maintenance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3. Working with Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.1 Configuring Artifacts Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.2 Configuring Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4. Working with Gradle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.1 Gradle Artifactory Plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.1.1 Gradle 1.6 Publishing Artifactory Plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.1.2 Gradle Artifactory Plugin using the snapshot version . . . . . . . . . . . . . . . . . . . . . . . . . 95
5. Working with Ivy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
6. Using Artifactory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
6.1 Browsing Artifactory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.2 Deploying via the Web UI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.3 Searching Artifacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.3.1 Quick Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.3.2 Class Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.3.3 Property Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6.3.4 GAVC Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6.3.5 Checksum Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.3.6 Bintray remote search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.4 Manipulating Artifacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.4.1 Deleting Single Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.4.2 Cleaning-up Complete Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.4.3 Moving Artifacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.5 Updating Your Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
6.6 Content-Type Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.7 Artifactory REST API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
6.7.1 Repository Configuration JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
6.7.2 Security Configuration JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
6.7.3 System Settings JSON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
7. Artifactory Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
7.1 Installing the Artifactory Pro Power Pack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
7.2 Artifactory Version Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
7.3 Build Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
7.3.1 Jenkins (Hudson) Artifactory Plug-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
7.3.2 TeamCity Artifactory Plug-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
7.3.2.1 TeamCity Artifactory Plugin - Release Management . . . . . . . . . . . . . . . . . . . . . . . 183
7.3.3 Bamboo Artifactory Plug-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
7.3.3.1 Bamboo Artifactory Plugin - Release Management . . . . . . . . . . . . . . . . . . . . . . . . 194
7.4 License Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
7.5 Black Duck Code Center Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
7.6 LDAP Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
7.7 Repository Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
7.8 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
7.8.1 Using Properties in Deployment and Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
7.9 User Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
7.10 YUM Repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
7.11 P2 Repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
7.12 NuGet Repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
7.13 RubyGems Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
7.14 Repository Layouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
7.15 Smart Searches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
7.16 Atlassian Crowd Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
7.17 Single Sign-on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
7.18 SAML SSO Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
7.19 Filtered Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
7.20 Watches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
7.21 WebStart and Jar Signing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
8. Bintray Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
8.1 Bintray info panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
8.2 Push To Bintray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
8.3 Deploying Maven and Gradle snapshots to OJO (oss.jfrog.org) . . . . . . . . . . . . . . . . . . . . . 272
9. Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
10. Release Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
10.1 Artifactory 2.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
10.1.1 1.3.0-RC2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
10.1.2 1.3.0-RC1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
10.1.3 1.3.0-beta-6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
10.1.4 1.3.0-beta-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
10.1.5 1.3.0-beta-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
10.1.6 1.3.0-beta-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
10.1.7 Artifactory 2.1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
10.1.8 Artifactory 2.2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
10.1.9 Artifactory 2.2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
10.1.10 Artifactory 2.3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
10.1.11 Artifactory 2.3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
10.1.12 Artifactory 2.3.4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
10.1.13 Artifactory 2.1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
10.1.14 Artifactory 2.1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
10.1.15 Artifactory 2.2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
10.1.16 Artifactory 2.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
10.1.17 Artifactory 2.2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
10.1.18 Artifactory 2.2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
10.1.19 Artifactory 2.3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
10.1.20 Artifactory 2.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
10.1.21 Artifactory 2.3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
10.1.22 Artifactory 2.4.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
10.1.23 Artifactory 2.4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
10.1.24 Artifactory 2.4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
10.1.25 Artifactory 2.5.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
10.1.26 Artifactory 2.5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
10.1.27 Artifactory 2.5.1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
10.1.28 Artifactory 2.5.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
10.1.29 Artifactory 2.6.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
10.1.30 Artifactory 2.6.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
10.1.31 Artifactory 2.6.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
10.1.32 Artifactory 2.6.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
10.1.33 Artifactory 2.6.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
10.1.34 Artifactory 2.6.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
10.1.35 Artifactory 2.6.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
10.1.36 Artifactory 2.6.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
10.2 Artifactory 3.0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
10.2.1 Artifactory 3.0.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
10.2.2 Artifactory 3.0.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
1.
2.
3.
4.
Installing Artifactory
Installing Artifactory
Before you install, refer to the section. System Requirements and Supported Platforms
Artifactory can be installed and run in a number of different ways:
Using thebundled Tomcat containeras a or UNIX Service Windows Service
Using thebundled Tomcat container as aStandalone Server
Using the , which sets up Artifactory as a service on a bundled Tomcat container - recommended RPM Distribution
As a standard WAR web app, either or see depending on the servlet container Drop The War specific instructions
Requirements
System Requirements
JDK
You can run Artifactory with and above, preferably JDK 1.7 update 21 and above. JDK 1.7
At least 512MB of allocated Java heap space is recommended, although it is possible to run with less RAM.
If you can reserve 512MB or more for Artifactory JVM, the recommended JVM option parameters are:
-server -Xms512m -Xmx2g -Xss256k -XX:PermSize=128m -XX:MaxPermSize=128m -XX:+UseG1GC
NOTE! that the larger the installation you must multiply thems, mx values accordingly.
Operating Systems
Artifactory has been tested and verified on Windows, Linux, Solaris and MacOS X. You should be able to run Artifactory on other platforms
supporting JDK 1.7 and above, but these have not been tested.
Browsers
Artifactory has been tested with the latest versions of Google Chrome, Firefox, Internet Explorer and Safari.
Servlet Containers
Artifactory ships with a bundled Tomcat 7 servlet container. however,Artifactory has been specifically verified to work seamlessly
on Tomcat 6 & 7, Jetty 6 & 7, JBoss 4.x & 5, BEA Weblogic 9, GlassFish v2 & V3, IBM Websphere 8.5 and Resin.
OS Service or Standalone
OS Service or Standalone
Before installing Artifactory on the bundled Tomcat server, ensure you have set the environment variable to point to a valid JDK JAVA_HOME
1.7+ home.
Follow these instructions for installing the standalone version under or . UNIX Windows
For greater performance and ease of maintenance you can also configure Artifactory to run on top of various . storage options
After successfully installing Artifactory, it should be available locally at: . http://localhost:8081/artifactory
1.
2.
Installing on UNIX
UNIX
When using UNIX, it is possible to either install Artifactory as a UNIX service or run it manually.
Before installation, it is recommended that you first verify your current environment by running theartifactoryct
l check under the $ARTIFACTORY_HOME/bin folder.
Installing Artifactory as Linux Service
Introduction
Artifactory is packaged as a zip with a bundled Tomcat and a complete install script that can be used to install it as a UNIX service, running
under a custom user.
Installing
To set up Artifactory as a Linux service:
Extract the packaged zip. This folder with the extracted files is considered the $ARTIFACTORY_HOME.
Runthe script as root. $ARTIFACTORY_HOME/bin/installService.sh
Set out below are details of the actions of the script:
User creation Creates a default user named "artifactory" ( ). $ARTIFACTORY_USER
You can change the default user by editing the $ARTIFACTORY_USE
value in . The install R /etc/opt/jfrog/artifactory/default
script accepts the user name as its first and only parameter.
etc config Creates the folder , copies the /etc/opt/jfrog/artifactory
configuration files there and creates a soft link in $ARTIFACTORY_H
OME/etc
etc default Creates the file contai /etc /default /opt/jfrog/artifactory
ning the main environment variables needed for Artifactory to run: JA
VA_HOME, ARTIFACTORY_USER, ARTIFACTORY_HOME,
... JAVA_OPTIONS,
The is included at the /etc /default /opt/jfrog/artifactory
top of and can include anything. artifactoryctl
that the default max memory is 2GB NOTE!
init.d Copies the service script file to artifactory /etc/init.d/arti
factory
Logs folder Creates folder, makes it writable for $ARTIFACTORY_HOME/logs
the user and creates a soft link ARTIFACTORY_USER $ARTIFACTOR
. Y_HOME/logs
The $ARTIFACTORY_HOME/tomcat/logs folder is linked to the $AR
TIFACTORY_HOME/logs/catalina.
Backup folder Creates the folder , so you must $ARTIFACTORY_HOME/backup
create a link if you want this folder to point to a different place (such
as: for example). The script makes /var/backup/artifactory $
writable for the user ARTIFACTORY_HOME/backup ARTIFACTORY_
. USER
Data folder Creates the folder , so you must create $ARTIFACTORY_HOME/data
a link if you want this folder to point to somewhere else. The script
makes it writable for the user . ARTIFACTORY_USER
chkconfig calls The script calls add, list (you can see the output), and then activates
the Artifactory service
After successfully running the script you can test the installation by running: or service artifactoryctl check /etc/init.d/artifact
ory check
Once everything is correct, start Artifactory with:
service artifactory start
or
/etc/init.d/artifactory start
You can then check the Artifactory log with:
tail -f $ARTIFACTORY_HOME/logs/artifactory.log
Generally, Artifactory is started as (when running as a service) and will internally to the user. root su $ARTIFACTORY_USER
Due to security considerations, it is not recommended that the is undefined and Artifactory runs as the current user, $ARTIFACTORY_USER
particularly if the current user is . root
. Note: In order to change the default storage follow this link
Running Artifactory Manually on UNIX
You can run Artifactory manually, without installation as a UNIX service, using directly to see its $ARTIFACTORY_HOME/bin/artifactory.sh
behavior. The console is locked on the Artifactory process and you can stop it cleanly with . crtl+c
To directly run Artifactory as a daemon process, using the environment variable of the shell you are currently in, execute the following script:
artifactoryctl check|start|stop
Installing on Windows
Windows
When using Windows, it is possible to install Artifactory as a Windows service or run it manually.
Running Artifactory Manually on Windows
Execute the "artifactory.bat" under the bin folder. This action searches for the Java executable and runs Artifactory's main class.
Installing Artifactory as a Windows Service
Overview
Artifactory makes use of the components providing the user with a method to install the application as a Windows Apache Commons Procrun
Service.
Requirements
The "JAVA_HOME" system variable should be set before running the installation, otherwise the script tries to find an appropriate JAVA
installation.
Optionally, the file found in can be edited and the default properties can be changed such %ARTIFACTORY_HOME%\bin InstallService.bat \
as and log directory. JAVA_OPTS
Installing
To install Artifactory as a Windows service, browse to , and execute the file . %ARTIFACTORY_HOME%\bin InstallService.bat
Windows 8 has a strict User Account Control (UAC), you must either disable UAC or right-click on cmd.exe and select "Run as
administrator" in order to run this script
1.
2.
Uninstalling
To uninstall the Artifactory service, browse to , and execute the file . %ARTIFACTORY_HOME%\bin UninstallService.bat
. Note: In order to change the default storage follow this link
Standalone Installation
Standalone Installation
You can set up Artifactory as a standalone server using the bundled Tomcat server, as follows:
Extract the Artifactory distribution archive (artifactory-xxx.zip) to a dedicated folder
This folder is (verify this by checking the presence of the ARTIFACTORY_HOME $ARTIFACTORY_HOME/etc/artifactory.config.x
file). ml
On the dedicated folder, go to the bin directory and run artifactory.sh for Unix, or artifactory.bat for Windows
In order to stop a standalone Artifactory instance, either use Ctrl-C, or kill the process using it's PID, or
execute$ARTIFACTORY_HOME/tomcat/bin/shutdown.sh/bat
Using WS datasorce
You can run Artifactory 3.x using WebSphere datasorce. This can be done
by creating two new datasorce, should have the same JNDI name but one
should end with 'noTX' (for none transaction)
ex: jdbc/oracleArDb, jdbc/oracleArDbnoTX
storage.properties should look like this:
type=oracle
driver=oracle.jdbc.OracleDriver
1.
2.
Running Behind HTTP Server
Artifactory can run behind an HTTP server. Examples of two popular servers are:
Running Behind Apache HTTPd
Running Behind nginx
================================================================
====================
Export / Import of Data to Artifactory from 2.6.6 and above to 3.x
NOTE! This method works only if the binaries are stored on the filesystem (the default config). If your server is configured to store binaries in the
database please follow the instructions . below
There are three steps required for the upgrade procedure:
Export from 2.6.6+
Copy the filestore from 2.6.6+
Import to 3.x
You can find detailed instructions below:
Export
The upgrade from version 2.x is not automatic. To upgrade from version 2.x read the upgrade instructions in the relevant sections
below.
The folder contains configuration files for specialized environments such as a or . misc Standalone Tomcat Server Websphere
Although these files are not required for runtime, it is recommended to replace this folder too.
If you have previously installed RPM from version 2.x, it cannot be upgraded. You must uninstall the old RPM and then install version
3.
1.
2.
NOTE! that if you have an updated backup, you can use this backup for performing the import. If your installation is coming from a legacy prior to
version 2.4.0 then use the full backup and do not export with exclude content as shown below.
Select the Admin tab and then go to -> to display the Export and Import options. Import & Export System
================================================================
====================
Upgrading From Version 2.2.x and Above to Version 3.x
The upgrade and installation process is divided into 3 steps:
Export from the previous version
Installation of Artifactory (in a new location) and defining a database
Import the data that was exported
Export
NOTE! that if you have an updated backup, you can use this backup for performing the import.
Select the Admin tab and then go to and select the target export directory. Import & Export -> System
NOTE! that you must add the timestamp to the name of the Zip File or Directory field after completion of the import process.
Set out below are the procedures required to upgrade Artifactory from version 2.2.x and above to version 3.x.
If you are using Artifactory version 2.6.6 it is preferable to use the above, which upgrade instructions
is a significantly faster procedure than a standard full system Export/Import.
Refer to for complete details of performing the export procedure. Importing and Exporting
Installation and Definition - Physical and Database
When installing the new version of Artifactory, it must be installed in a location to the previously installed version. different
If you have previously installed RPM from version 2.x, it cannot be upgraded. You must uninstall the old RPM and then install version 3.
If you are using an external database, you cannot use the same schema. You must create a new schema for the upgraded version.
Once you have taken the above into consideration, you can now perform a regular installation of Artifactory. Refer to for Installing Artifactory
details.
Import
Select the Admin tab and then go to and select the target directory to import to. Import & Export -> System
Refer to for complete details of performing the import procedure. Importing and Exporting
NOTE! that you must add the timestamp to the name of the Zip File or Directory field after completion of the import process.
================================================================
====================
Upgrading From 2.2.x or Earlier Versions
To upgrade from version prior to 2.2 you must first upgrade to 2.6. For details on how to perform this upgrade refer toUpgrading Artifactory to
. Version 2.6.x
Administering Artifactory
Overview
This section describes the Artifactory administration tasks, such as managing repositories, controlling security and configuring scheduled
services.
General Configuration
Managing Repositories
Managing Security
Managing Backups
Importing and Exporting
Mail Server Configuration
Configuration Files
Exposing Maven Indexes
Clustering Artifactory
The Artifactory Log Files
System Information
Maintenance
General Configuration
Introduction
To access the General Configuration settings of Artifactory, click on the Admin tab at the top of the viewing pane. In the left pane of the screen
select C the General Configuration options are displayed. onfiguration -> General
General Settings
The General Settings configurations allow you to set up various parameters that globally affect Artifactory. Enter the required information into
each field. Click on the icon next to each field for a detailed description of the information to be added. Fields marked with a red star are ?
mandatory.
The General Settings fields are as follows:
Field Name Description
Server Name(mandatory) The name of the server to be displayed on the title of each page.
Custom URL Base By default, URLs generated in Artifactory use context URL returned
by your servelt container as a base.
A custom URL base is useful when Artifactory is running behind a
proxy. In this case the base for URLs generated in Artifactory for
links and redirect responses must be specified manually.
Another reason to change the base URL would be to have
non-request-based operations in Artifactory use the correct address,
for example in generated emails.
File Upload Max Size Maximum size allowed for files uploaded via the web interface.
Date Format (mandatory) The date format for displaying dates inside the web interface.
Global Offline Mode A global offline checkbox alerting Artifactory to act as if it is not
connected to an external network (such as the internet), and
therefore, not to query remote repositories (regardless of the offline
status of a single remote repository).
Look and Feel Settings (UI Branding)
In the Look and Feel Settings you can customize Artifactory with your own logo presented in both the upper left of the screen and footer text.
1.
2.
Field Name Description
Logo URL Use an existing image on a remote URL
Logo File Upload a logo image using the Choose File button.
NOTE!that the uploaded file is copied into theARTIFACTORY_HOME
/etc/ui folder.
Additional Footer Text Input the desired text you want to add to the footer. This is a free text
field.
Add-on Settings
Mark thischeck-boxto control Artifactory's behavior in connection with the Artifactory Add-ons Power Pack.
The Server ID is used to activate the Artifactory Add-ons Power Pack on the current Artifactory server. You can leave it unchecked when
using the open source version and no add-ons are installed.
You can decide whether or not to show available add-ons information in Artifactory for add-ons you do not have installed.
Available add-on information typically looks like this:
As an admin, you can decide whether or not users see Add-on information.
that marking the Show Available Add-ons Info checkbox overrides any previous user-specific preference for NOTE!
hiding it (you are still able to choose to hide this information again, if desired).
Managing Repositories
This section provides details of the common controls available for each repository type.
Understanding Repositories
Configuring Repositories
Local and Remote Repositories
Local Repositories
Remote Repositories
Virtual Repositories
Understanding Repositories
Local, Remote and Virtual Repositories
Artifactory hosts two kinds of repositories:
Local
Remote
Both local and remote repositories can be aggregated under repositories to create controlled domains for artifacts resolution and search, virtual
as detailed in the following sections.
Managing Repositories
To access theRepositoriessettings of Artifactory, click on the Admin tab at the top of the viewing pane. In the left pane of the screen select Conf
The Configure Repositories options are displayed. iguration -> Repositories.
Repositories can be created, deleted, edited, ordered and aggregated.
To make changes visible you must save them first.
Local Repositories
Local repositories are physical, locally-managed repositories into which you can deploy artifacts.
Artifacts under a local repository are directly accessible via the following URL:
http://<host>:<port>/artifactory/<local-repository-name>/<artifact-path>
Artifactory is deployed with a number of pre-configured local repositories for deploying internal and external releases, snapshots and plugins.
Remote Repositories
A remote repository serves as a caching proxy for a repository managed at a remote URL (including other Artifactory remote repository URLs).
Artifacts are stored and updated in remote repositories according to various configuration parameters that control the caching and proxying
behavior. You can remove cached artifacts from remote repository caches but you cannot manually deploy anything into a remote repository.
Artifacts under a remote repository are directly accessible via the following URL:
http://<host>:<port>/artifactory/<remote-repository-name>/<artifact-path>
or
http://<host>:<port>/artifactory/<remote-repository-name>-cache/<artifact-path> (the second URL only serves
already-cached artifacts while the first one fetches a remote artifact in the cache, if it is not already stored).
Artifactory is deployed with preconfigured common remote repositories, which you can, of course, change.
Remote repository configuration can also be imported from another Artifactory instance. JFrog contains an up-to-date standard Public Repository
list of remote repositories available on the net.
A remote repository acts as a . Artifacts are not stored eagerly in remote repository caches, but are fetched and proxy as a mirror not
stored when they are requested by a client. on demand
Therefore, a remote repository should contain zero artifacts immediately after its creation.
Virtual Repositories
A virtual repository (or "repository group") aggregates several repositories under a common URL. The repository is virtual in that you can resolve
and retrieve artifacts from it but you cannot deploy anything to it.
The Default Virtual Repository
By default, Artifactory uses a global virtual repository available at:
http://<host>:<port>/artifactory/repo
This repository contains all local and remote repositories.
Virtual Resolution Order
When requesting artifacts from a virtual repository, the search/resolution order is always: local repositories, remote repository caches
and finally remote repositories themselves. The order by which repositories of the same type (local, cache and
remote) are queried is governed by the order local, remote and virtual repositories are listed in the configuration
(see below).
Artifactory's virtual repository configuration includes a "Resolved Repositories" list view displaying the effective repositories order per virtual
repository. This is particularly helpful when nesting virtual repositories.
General Resolution Order
Managing the global configuration order is performed under the Admin tab and then . Configuration -> Repositories
You can reorder each list of repositories (local, remote, virtual) using drag-and-drop or select with the up and down arrow buttons. When your
order is complete, use the "Save" or "Reset" to cancel the reordering.
Repositories resolution is also affected by security privileges, include/exclude patterns and snapshots/releases handling policies.
Configuring Repositories
Overview
This section covers the controls that are common between all repository configurations.
Repository Key
Field Name Description
Repository Key (mandatory) The repository identifier must be a valid , and be XML ID Name
unique for the whole Artifactory configuration data. Therefore,
repository keys cannot begin with a number. It is recommended to
suffix the local repository with "-local".
1.
2.
Description A free text field for providing a description of the content and purpose
of the repository. This assists user configuration, UI screens and
repository sharing.
Internal Notes A free text field to add additional notes about the repository.
Include and Exclude Patterns
It is extremely important to use Includes and Excludes patterns for repositories, particularly for remote repositories in order to:
Avoid looking-up remote artifacts on repositories that will never contain those artifacts or that contain only a limited range of group IDs.
Prevent disclosing sensitive business information derived from your artifact queries to whomever can intercept the queries, including the
owners of the remote repository itself.
As best practice, it is easier to manage the list of remote repositories used in an organization under one virtual repository (for example: remote-re
. pos)
In such a case, you can globally stop querying remote repositories for company artifacts by setting an exclude pattern on this virtual repository.
Include and exclude filtering is controlled by editing the Includes Pattern and Excludes Pattern values for a repository under the Admin Tab and
then . General -> Repositories -> Edit
Specify a comma separated list of Ant-like patterns to filter-in and filter-out artifact queries. Filtering works by subtracting the excluded patterns
(default is none) from the included patterns (defaults to everything).
Example:
The pattern below causesArtifactory to submit queries to the repository in question:
and but not for org/apache/maven/parent/1/1.pom com/acme/project-x/core/1.0/nit-1.0.jar com/acme/exp-project/cor
. e/1.1/san-1.1.jar
Includes Pattern: org/apache/**,com/acme/**
Excludes Pattern: com/acme/exp-project/**
Local and Remote Repositories
Overview
This section covers the controls that are common between local and remote repositories.
Snapshots and Releases Handling Policy
You can configure whether a local or remote repository handles snapshots and/or releases artifacts.
The repository rejects deployments conflicting with this policy and does not participate in conflicting resolution
requests.
Checkbox Name Description
Handle Releases Whether the repository handles release artifacts.
Handle Snapshots Whether the repository handles snapshot artifacts.
Blacked Out It is possible, if required, to completely black-out a repository by
marking this checkbox.
A blacked-out repository does not participate in any artifacts
resolution and artifacts cannot be downloaded from it or deployed to
it.
Suppress POM Consistency Checks By default, Artifactory keeps your repositories healthy by refusing
bad POMs with incorrect coordinates (path).
If the information inside the POM groupId:artifactId:version
does not match the deployed path, Artifactory rejects the
deployment.
You can disable this behavior by marking the "Suppress POM
Consistency Checks" checkbox.
Allow Content Browsing Allows Unsafe Content Browsing and determines whether viewing file
content (e.g., Javadoc browsing, HTML files) directly from Artifactory
is allowed.
Allowing content browsing requires strict content moderation to make
sure malicious users do not upload content that is used to
compromise security. For example, to conduct cross-site scripting
attacks.
Local Repositories
Overview
This section covers the controls that are specific to local repositories.
Field Name Description
Public Description Free text description of the repository.
This description also appears when selecting the repository in the
tree browser.
Internal Notes Optional free text description about this repository.
Includes Pattern Comma-separated list of artifact patterns to include when evaluating
artifact requests, in the form of x/y/**/z/*.
When used, only requests matching one the include patterns are
served. By default all artifacts are included (**/*).
Excludes Pattern Comma-separated list of artifact patterns to exclude when evaluating
artifact requests, in the form of x/y/**/z/*.
By default no artifacts are excluded.
Repository Layout Select the layout that the repository should use for storing and
identifying modules.
Cheksum Policy Checksum policy determines how Artifactory behaves when a client
checksum for a deployed resource is missing or conflicts with the
locally calculated checksum (bad checksum).
Checksum checking effectively verifies the integrity of the deployed
resource.
There are two options:
(1) Verify against client checksums (default) - Until a client has sent a
valid checksum for a deployed artifact matching the server's locally
calculated checksum, the artifact's checksum is not available and
returns a 404 (not found) error. If the client has sent a checksum that
conflicts with the one calculated on the server a 409 (conflict) is
returned until a valid checksum is deployed.
(2) Trust server generated checksums - Do not verify against
checksums sent by clients and trust the server's locally calculated
checksums. An uploaded artifact is available for consumption
immediately, but integrity might be compromised.
Maven Snapshot Version Behavior Whether to use time-based version numbers for the name of
SNAPSHOTs, or to use a non-unique, self-overriding naming pattern
of artifactId-version-SNAPSHOT.type (the default), or to respect the
deployer settings coming from the Maven client.
Max Unique Snapshots The maximum number of unique snapshots (of the same artifact) to
store. Any number of snapshots above the max are automatically
removed by age.
A value of 0 (the default) indicates that there are no limits on the
number of unique snapshots (thus no automatic cleanup).
Handle Releases Whether the repository handles release artifacts.
Handle Snapshots Whether the repository handles snapshot artifacts.
Blacked Out Whether the repository is blacked-out. A blacked-out repository does
not participate in artifact resolution, nor does its local cache.
Suppress POM Consistency Checks Whether the repository should suppress POM Consistency Checks.
Allow Archive Browsing Allow Unsafe Archive Content Browsing - Determines whether
viewing archive content (e.g., Javadoc browsing) directly from
Artifactory is allowed.
Allowing content browsing requires strict content moderation to
ensure malicious users do not upload content that is used to
compromise security. For example, to conduct cross-site scripting
attacks.
Centrally Controlled Maven Unique Snapshot Policy
Artifactory allows you centralized control of how snapshots are be deployed into a repository, regardless of end user-specific settings. This
guarantees standardized format for deployed snapshots within your organization.
1.
2.
Field Name Description
Snapshot Version Behavior The available options are:
Non-unique snapshots
Unique snapshots - with unique time-stamp and build number
suffix
Deployer-respecting behavior - Artifactory respects the user
snapshot policy, i.e. act as a standard, non-smart, repository
Max Unique Snapshots Maximum number of unique snapshots to be deployed
Cleaning-up Unique Snapshots
You can configure Artifactory to automatically clean up old unique snapshots by setting the repository's value to the Max Unique Snapshots
maximum number of unique snapshots of an artifact that should be maintained in the repository. Clean up takes effect on each new snapshot
deployment.
Handling Deployed Client Checksums
Checksum policy determines how Artifactory behaves when a client checksum for a deployedresource is missing or conflicts with the locally
calculated checksum (bad checksum).
Checksum checking effectively verifies the integrity of the deployed resource.
The options are:
Verify against client checksums (default) - Until a client has sent a valid checksumfor a deployed artifact that matches the server's
locally calculated checksum, theartifact is unavailable and returns a 404 (not found) error message. If the client has sent achecksum
conflicting with the one calculated on the server, a 409 (conflict) error message is returned until a valid checksum is deployed.
Trust server generated checksums - Do not verify against checksums sent by clientsand trust the store
server's locally calculated checksums. An uploaded artifactis unavailable for consumption immediately, but
integrity might be compromised.
Pre-canned Repositories
Artifactory comes with a set of per-defined local repositories, which reflect binary management best practices.
Repository Name Purpose
libs-release-local Your code releases
libs-snapshot-local Your code snapshots
ext-release-local Manually deployed 3rd party libs (releases)
ext-snapshot-local Manually deployed 3rd party libs (shapshots)
plugins-release-local Your and 3rd party plugins (releases)
plugins-snapshot-local Your and 3rd party plugins (snapshots)
Maven 3 Only Supports Unique Snapshots
Maven 3 has dropped support for resolving and deploying non-unique snapshots. Therefore, if you have a snapshot repository using
non-unique snapshots, it is recommended to change your Maven snapshot policy to 'Unique' and remove any previously deployed
snapshot from this repository.
The unique snapshot name generated by the Maven client on deployment cannot help in identifying the
source control changes from which the snapshot was built and has no relation to the time sources checked
out. It is advised to have the artifact itself embed the revision/tag (as part of its name or internally) for clear
and visible revision tracking. Artifactory allows you to tag artifacts with the revision number as part of its Buil
d Integration support.
Remote Repositories
This section describes various aspects of managing remote repositories:
Managing Caches
Handling Offline Scenarios
Handling Checksums
Going Through Proxies
Advanced Settings
Importing Shared Configurations
Managing Caches
Overview
This section examines the settings used by remote repositories for deciding how to handle remote artifact requests.
When a remote artifact is stored in Artifactory, it is cached for a certain and controlled period of time. For Maven
artifacts, this is applicable only for snapshots, since releases are assumed never to change.
When Artifactory receives a request, where an artifact that its caching timeout has expired, Artifactory checks if there is an updated artifact
remotely.
Field Name Description
Repository Layout Select the layout the repository to be used for storing and identifying
modules.
Remote Layout Mapping Select the layout that best matches the layout used by remote
repository for storing and identifying modules.
Path-mapping takes place if the remote layout is different from the
local layout - remote module artifacts and descriptors are stored
according to the local repository layout (e.g., Maven 1->Maven 2, or
Maven 2->Ivy).
Proxy Network proxy reference
Local Address The local address to be used when creating connections.
Useful for specifying the interface to use on multi-homed systems.
Username Enter the HTTP authentication username.
Password Enter the HTTP authentication password.
Socket Timeout This is the timeout period (for socket and connection) that Artifactory
waits for before giving up on retrieving an artifact from a remote
repository. After a timeout Artifactory caches the fact that a retrieval
failure has happened for the amount of time defined in "Failed
Retrieval Cache Period".
Artifactory answers future requests for that particular artifact withNOT
_FOUND(404) for a period of "Failed Retrieval Cache Period"
seconds and does not attempt to retrieve it it again until that period
expired.
Keep Unused Artifacts (Hours) Many cached artifacts in Artifactory remote repository storage are
actually unused by any current projects in the organization. To solve
this issue you can set an automatic removal of unused artifacts in
remote repository caches.
Retrieval Cache Period (Secs) Defines how long before Artifactory checks for a newer version of a
requested artifact in remote repository. Artifactory will not fetch
anything but the metadata if no newer version is found.
Assumed Offline Limit (Secs) The number of seconds the repository stays in assumed offline state
after a connection error. At the end of this time an online check is
attempted in order to reset the offline status.
A value of 0 means the repository is never assumed offline.
Missed Retrieval Cache Period (Secs) The number of seconds to cache artifact retrieval misses. A value of
0 means no caching.
A miss is a 404 response ( ) received from a remote NOT_FOUND
repository that currently does not have the artifact requested. You
might want to treat this differently than when failing to retrieve the
artifact is due to network problems.
Zapping Caches
You can clean up the Retrieval Cache by selecting a cached file or a folder in the Artifacts tab and then and clicking (or Tree Browser
selecting, if right-clicking the item) the "Zap Caches" action.
You can cleanup both the Retrieval Failures Cache and Missed Retrieval Cache by selecting a cached folder in Artifacts -> Tree
and clicking (or selecting, if right-clicking the item) the "Zap Caches" action. Browser
Timeout settings in many different locations were stringently tested before deciding on the default values.
It is therefore recommended not to change the defaults, unless there is a compelling reason to do so.
Handling Offline Scenarios
Overview
Artifactory supports two kinds of offline cases:
Organization-wide Offline - When the whole organization is disconnected from remote repositories
Single Repository Offline - When one or more remote repositories needs to be put offline.
Organization-wide Offline
In this case, remote repositories serve as caches only and do not proxy remote artifacts.
This is common in organizations using a separate secured network (such as military or financial institutes) and are disconnected from the rest of
the world.
You can turn the Global Offline Mode flat checkbox on (and off), under the Admin tab and then . Configuration -> General
Field Name Description
Server Name A name uniquely identifying this Artifactory server instance across
the network.
Custom URL Base A hard-coded URL prefix used by Artifactory for calculating relative
URLs.
Use this only if you need to override the default URL base
(equals to the Servlet Context URL.
For Example: ). http://myhost.com/artifactory
File Upload Max Size The maximum size in megabytes for artifact files uploaded through
the web UI. Set to '0' for unlimited size.
Date Format The format to be used for displaying dates.
Global Offline Mode If this checkbox is marked, Artifactory never tries to fetch artifacts
remotely.
Only cached and local artifacts are served.
Single Repository Offline
A less rigid case is where one or more remote repository has gone offline for some reason.
In this situation, it is possible to configure Artifactory to treat the individual remote repository as offline, so that only artifacts already present in the
cache are used.
Field Name Description
URL The URL for the remote repository. Currently only HTTP/S URLs are
supported.
Public Description Textual description of the repository.
This description also appearx when selecting the
repository in the tree browser.
Internal Notes Free text field for optional notes about this repository.
Includes Pattern Comma-separated list of artifact patterns to include when evaluating
artifact requests, in the form of x/y/**/z/*. When used, only requests
matching one the include patterns will be served.
By default all artifacts are included (**/*).
Excludes Pattern Comma-separated list of artifact patterns to exclude when evaluating
artifact requests, in the form of x/y/**/z/*.
By default no artifacts are excluded.
Checksum Policy Checksum policy determines how Artifactory behaves when a
checksum for a remote resource is missing or conflicts with the
locally calculated checksum (bad checksum).
Checksum checking effectively verifies the integrity of the remote
resource.
The options are:
(1) Generate if absent (the default) - A bad remote checksum fails
the resource request. If however, a remote checksum could not be
found, Artifactory automatically generates one.
(2) Fail: A bad or missing remote checksum fails the resource
request.
(3) Ignore and generate: Artifactory locally generates a checksum for
both a bad or missing remote checksum. Remote resource retrieval
never fails, but integrity might be compromised.
(4) Pass-thru: Artifactory stores and passes-thorugh all remote
checksums including bad ones and locally generates a checksum for
a missing remote checksum cannot be found.
Remote resource retrieval never fails, but integrity
might be compromised and client-side checksum
validation (such as that performed by Maven) fails.
Max Unique Snapshots The maximum number unique snapshots (of the same artifact) to
store.
Any number of snapshots above the max will be automatically
removed by age. A value of 0 (the default) means no limits on unique
snapshots number (thus no automatic cleanup).
Handle Releases Whether the repository handles release artifacts.
Blacked Out Whether the repository is blacked-out. A blacked-out repository does
not participate in artifact resolution, nor does its local cache.
Share Configuration Whether or not the configuration details of this remote repository can
be publicly shared with remote clients, such as other Artifactory
servers.
Handle Snapshots Whether the repository handles snapshot artifacts.
Offline When this checkbox is marked only already-cached artifacts are
retrieved and fetching remote artifacts is not attempted.
Handling Checksums
Overview
Artifactory can help you block broken artifacts by activating checksum handling - Artifactory queries the remote checksum prior to storing the file
locally.
Configuring Checksum Policies
Using the configuration for a remote repository, you can select:
Recalculating bad checksums
Failing on bad checksums (blocking them)
Calculate only missing checksums
Accepting bad checksums.
Going Through Proxies
Overview
In corporate environments it is often required to go through a proxy server to access remote resources.
Artifactory supports both regular network proxies and NTLM proxies.
Defining Proxies
To use a proxy you must create a proxy definitionunderthe Admin tab and then . Configuration -> Proxies
Click New to create a new proxy. Fields that do not require any value in your setup can be left blank (e.g. if you are
not using authentication credentials or an NTLM proxy).
Field Name Description
Proxy Key The unique ID of the proxy.
System Default Mark this checkbox to make this proxy the default for new remote
repositories and for internal HTTP requests.
Host The name of the proxy host.
Port The proxy port number.
Username The proxy username.
Password The proxy password.
NT Host The computer name of the machine (the machine connecting to the
NTLM proxy).
NT Domain The proxy domain/realm name.
Redirecting Proxy target Hosts An optional list of newline or comma separated host names to which
the proxy may redirect requests.
The credentials of the proxy are reused by requests redirected to any
of these hosts.
The following message appears when marking the "System Default" checkbox:
Click "OK" to assign this proxy to all remote repositories (see below).
If the proxy is defined as "System Default" Artifactory uses it for all HTTP queries not related to remote repositories
downloads. Only one system default proxy can be defined.
The optional redirecting proxy target hosts allows listing host names to which the proxy may redirect requests. The credentials of the proxy are
reused by requests redirected to any of these hosts.
Using Proxies
Advanced Settings
Overview
The Advanced Settings can be found under the Admin tab and then and then click on New or select an existing Configuration -> Repositories
A remote repository uses a proxy only if one is selected in the configuration panel for that repository. The "System Default" proxy
is assigned automatically when creating a new remote repository, but is not used by default.
A remote repository without a defined proxy does not use any proxy!
remote repository to edit.
A list of remote repositories can be selected and the repository key for each of them can be changed.
Virtual Repositories
You can declare a remote repository with a URL pointing to yourself in order to offer access to your Artifactory. Be careful that this
remote repository is not usable.
If you have a "System Default" proxy defined, Artifactory uses it for performing this HTTP query.
1.
2.
3.
Important points to notice:
If the repository key already exists, the configuration of the existing remote repository is modified.
If HTTP proxy is used, each of the new repository must be associated with the local proxy definition.
You must add new remote repositories to existing virtual repositories so they are visible to virtual repository requests.
1.
2.
3.
4.
Overview
Artifactory allows you to define a virtual repository which is a collection of local, remote and other virtual repositories under a single logical URL.
A virtual repository hides the underlying repositories and lets users work with a single, well-known URL, while
allowing you to change the participating repositories and their rules without requiring any client-side changes.
The main features supported by a virtual repository are:
Nesting
Include Exclude patterns filter
Automatic removal of repository references
WebStart automatic signing and JNLP file conversion
Setting Up a Virtual Repository
From the Admin tab go to and create a new virtual repository. Configuration -> Repositories -> Virtual Repositories
Add the repositories you want to be part of the virtual repositories to the virtual repository list of selected
repositories.
The actual list of effectively resolved repositories (after expanding nested virtual repositories) is displayed and automatically updated.
1.
2.
3.
The search/resolution order when requesting artifacts from a virtual repository is always:
Local repositories
Remote repository caches
Remote repositories themselves.
Field Name Description
Public Description Free-text field description of the repository.
This description also appears when selecting the repository in the
tree browser.
Internal Notes Free-text field for optional notes about this repository.
Includes Pattern Comma-separated list of artifact patterns to include when evaluating
artifact requests, in the form of x/y/**/z/*.
When used, only requests matching one the include patterns are
served.
By default, all artifacts are included (**/*).
Excludes Pattern Comma-separated list of artifact patterns to exclude when evaluating
artifact requests, in the form of x/y/**/z/*.
By default, no artifacts are excluded.
Repositories A set of local and remote repository references to include in a virtual
repository.
Resolved Repositories The resolved list of repositories.
Repositories beginning with an exclamation mark ('!') indicate that not
all tokens can be mapped between the layout of this virtual repository
and the marked repository.
Path translations may not work as expected.
Nesting Virtual Repositories
The ability to nest virtual repositories is unique to Artifactory. It allows for greater reuse of virtual repositories between themselves.
Include Exclude Patterns in Virtual Repositories
The coupling of Include/Exclude patterns of Artifactory to virtual repositories nesting provides a powerful feature. Configuring Repositories
You can define in a single virtual repository "remote-repos" the company groupId exclusion, and it ensures that no
requests for internal artifacts are sent externally.
Another example for this feature, is defining virtual repository for a project and filter undesirable groupId, sources or versions, that are not visible
to developers.
Serving Requests from Other Artifactory Instances
By marking the 'Artifactory Requests Can Retrieve Remote Artifacts' checkbox, you can instruct Artifactory whether the virtual repository should
include remote repositories in artifacts resolution when answering requests coming from other Artifactory instances. This is useful when
deploying Artifactory in a mesh (grid) architecture, where you do not want all remote Artifactories to act as remote proxies for other Artifactory
instances.
Artifactory detects when overly nesting repositories enter an infinite loop and warns against it.
To control remote artifacts resolution for other Artifactory instances for the global virtual repository 'repo', you must use the artifact
system property, which is set to by default. ory.artifactoryRequestsToGlobalCanRetrieveRemoteArtifacts false
Field Name Description
Repository Layout Select the layout that the repository should use for storing and
identifying modules.
Artifactory Requests Can Retrieve Remote Artifacts Mark this checkbox to determine whether artifact requests arriving
from other Artifactories can be fulfilled by accessing this virtual
repository's remote repositories or by only accessing its caches (the
default).
Cleanup Repository References in POMs (1) Discard Active References - Removes repository elements that
are declared directly under project or under a profile in the same
POM. By default, this is active.
(2) Discard Any References - Removes all repository elements
regardless of whether they are included in an active profile or not.
(3) Nothing - Does not remove any repository elements declared in
the POM.
Key Pair A named key-pair to use for automatically signing artifacts.
Zap Caches Clears all caches stored at the virtual repository level (transformed
POMs, JNLP files, merged indexes, etc.)
Ensuring Artifactory is Your Sole Artifacts Provider
One very bad practice often used on public POMs, is to add a direct reference to an external repository in a POM. When either of the code
examples below are present, Maven dynamically adds an external repository URL to the build. This shortcuts Artifactory.
1.
2.
3.
<project><repositories><repository>
or
<project><pluginRepositories><pluginRepository>
Until now, the solution was using mirrorOfas described here.
Artifactory provides at the virtual repository level, an automatic cleanup of POM file. Three levels of cleanup policy are configurable:
Discard Active References - Removes repository elements that are declared directly under project or under a profile in the same pom
that is activeByDefault.
Discard Any References - Removes all repository elements regardless of whether they are included in an active profile or not.
Nothing - Does not remove any repository elements declared in the POM.
Pre-canned Repositories
Artifactory comes with a set of per-defined virtual repositories, which reflect binary management best practices.
Repository Name Purpose
remote-repos Aggregation of all remote repositories
lib-releases libs-releases-local, ext-releases and remote-repos
plugins-releases plugins-releases-local, ext-releases and remote-repos
libs-snapshots libs-snapshots-local, ext-snapshots-local, remote-repos
plugins-snapshots plugins-snapshots-local, ext-snapshots-local, remote-repos
repo Aggregation of all repositories
Managing Security
Overview
Artifactory offers a strong security model.
It allows you to:
Assign role-based or user-based permissions to areas in your repositories (called Permission Targets)
Allow sub-administrators for these areas
Configure LDAP out-of-the-box
Prevent clear text in your Maven's settings.xml
Inspect security definitions for a single artifact or folder and more.
Artifactory's security is based on Spring Security and can be extended and customized.
This section explains the strong security aspects and controls offered by Artifactory:
Managing Users
Managing Groups
Managing Permissions
Managing Security with LDAP
Centrally Secure Passwords
Access Log
Managing Users
Overview
Artifactory user management is available under the Admin tab and then . Security -> Users
An administrator must create users (unless external authentication, such as LDAP is active) and assign each user roles and permissions.
Creating and Editing Users
Create a new user by clicking the New button next to the users table.
Unchecking the "Can Update Profile" checkbox prevents a user from updating his profile details. This can be useful, for example, for creating a
shared departmental user, with a single password shared between all department members. Only an administrator can update the password.
When external authentication, such as LDAP, is active you can disable the fallback to use an internal password by checking the "Disable Internal
Password" checkbox.
Administrator Users
An administrator user is to Artifactory as a root is to UNIX systems. Administrators are not subject to any security restrictions. It is therefore
recommended to create a minimum number of administrators.
You can always create less powerful, per-permission-target, administrators inside Artifactory (responsible for a specific repository path). See the
section. Permissions Management
The Anonymous User
Artifactory supports the concept of anonymous users.
A built-in, unmodifiable 'anonymous' user exists in Artifactory and can be assigned permissions, as any regular
user. A global "Allow Anonymous Access" checkbox controls whether this 'anonymous' user is active or not, and
must be marked before you can fine tune the anonymous user permissions.
Anonymous access is activated by default. It can be deactivated by going to the Admin tab and thenSecurity ->
General:
Passwords are always stored as hashes or encrypted hashes inside Artifactory.
The Default Admin Account
The default user name and password for the built-in administrator user are: . admin/password
You should change the password after first log in. It is possible to recover the default admin account by following these . instructions
When the global Allow Anonymous Access is marked, anonymous download requests can download cached artifacts and populate caches,
regardless of other permissions definitions.
User Management
Other user management functions such as editing, removing and assigning groups to selected users are performed under the Admin Tab and
thenSecurity -> Users
Recreating the Default Admin Account
Obtaining A Security Configuration File
If your instance of Artifactory is configured to perform backups, you can find the file at the top backup directory. Otherwise, see security.xml
here
To amend the secuirty.xml file:
1.
2.
3.
1.
2.
1.
2.
Make a copy of this file
Open it with a text editor
Change the admin's "password" field, as follows:This is 'password' in hash and set it aside.
<password>5f4dcc3b5aa765d61d8327deb882cf99</password>
that if no backup is available, contact JFrog for further assistance. NOTE!
Forcing export of security.xml file
Remove the following file and restart Artifactory:
$ARTIFACTORY_HOME/data/.deleteForSecurityMarker
Make sure to let the Artifactory startup process finish with no interruption, you have the security.xml file with the current timestamp
inside$ARTIFACTORY_HOME/etc/security.<timestamp>.xml
No other operation required once startup has completed.
Resetting The Password
To reset the password:
Take the modified security configuration file and place it under $ARTIFACTORY_HOME/etc
Rename it to:
security.xml for versions 2.0.6 - 2.0.8.
security.import.xml for versions 2.1.0 - latest.
Restart Artifactory
The admin password is reset.
Managing Groups
Overview
Groups are managed in Artifactory from the web user interface under the Admin tab and then . Security -> Groups
Create a new group by clicking the New button next to the groups table.
A group is a role in Artifactory and is used with RBAC (Role-Based Access Control) rules.
Default Groups
When creating (or editing) a group you can mark it as a default group to which all newly-added users from this point auto-join.
This is particularly useful when using external authentication such as LDAP, where users are automatically created
on successful login and you want them to automatically be part of a certain group.
Managing Permissions
Overview
Artifactory allows you to manage permissions via Permission Targets. A permission target is a concept that denotes a physical (non-virtual)
repository and includes and excludes patterns in the repository together with a set of permissions.
Multiple permissions for groups or users can be attached to a single permissions target, hence ACLs,
An example permission target:
The repository target containing all files (by include/exclude patterns) under the 'libs-releases' repository has read
and deploy permissions for the user 'Builder' and for the group 'Deployers'.
Permissions Management
You can create, edit and delete permission targets and permissions from the permissions page. Got to the Admin tab and then Security ->
. Permissions
Creating a Permission Target
When creating a permission target, select the repositories the permission target is applicable to.
Select multiple include and exclude patterns in Ant-like format. The combination of these patterns constitute the set of paths to be governed by
this permission target. In the example below, sources are specifically excluded from the permissions.
Use the dropdown lists to insert common predefined include and exclude patterns and customize them to suit your requirements.
Finally, select the Groups and Users you want to grant/revoke permissions for. There are five possible permissions:
Read - Allows reading/downloading artifacts.
Annotate - Allows annotating artifacts and folders with metadata and properties.
Deploy - Allows deploying artifacts and deploying to caches (populate them with remote artifacts).
Delete - Allows deleting or overwriting artifacts.
Admin - Allows adding permissions to other users on this permission target.
Permission Target Admins
Permission Target administrators are local administrators to the specific permission target. They can assign new permissions on the permission
target to other users or groups. Upon logging-in to the web application, these users have access to the specific section they allowed to
administer.
This set up is extremely useful if you have a multi-team site and you want to delegate to teams the role of managing
their repositories.
An anonymous user cannot be permission target administrator.
Preventing Overwriting Deployments
The Delete permission can be used to prevent overwriting a deployed release or unique snapshot. Non-unique snapshots can always be
overwritten (as long as the Deploy permission is on).
Examining Permissions
By Arifact/Path
To examine the effective permissions of any item select it in the Tree Browser from the Artifacts tab and then and select the Tree Browser
Effective Permissions tab.
By User
You can also select a specific user from the user management panel. Go to the Admin tab and then to view the Security -> Users
permission targets the user is part of (directly or by group association).
Permissions are additive and negative (actions not specifically granted are forbidden).
Only users and groups with the assigned permissions appear. If you do not see a user or a group in the table, they do not have any
permissions on the selected item.
Managing Security with LDAP
LDAP Authentication
Artifactory OSS has out-of-the-box support for authenticating users against an LDAP server.
When LDAP authentication is active, Artifactory first attempts to authenticate the user against the LDAP server. If
the LDAP authentication fails, Artifactory tries to authenticate via its internal database.
For every LDAP authenticated user Artifactory creates a new user in the internal database, if that user does not already exist, Artifactory assigns
the user the default (auto-join) groups.
Configuration
LDAP authentication is configurable. Go to the Admin tab and then . Security -> LDAP Settings
The configuration parameters for connecting to LDAP are:
Parameter Name Description
Settings Name The unique ID of the LDAP setting.
Enabled Mark the checkbox to changet the setting to "Enabled".
Managing Permissions for LDAP Groups
Artifactory can synchronize your LDAP groups and leverage your existing organizational structure when managing group-based
permissions. LDAP groups in Artifactory use super-fast caching and has support for both Static, Dynamic and Hierarchical mapping
strategies.
Powerful management is accomplished with multiple, switchable LDAP settings and visual feedback about the up-to-date status of
groups and users coming from LDAP.
The feature is bundled as one of the Add-ons in the Artifactory Power Pack. LDAP Groups
1.
2.
3.
4.
LDAP URL Location of the LDAP server in the form of:ldap://myserver:myp
ort/dc=sampledomain,dc=com.
It should include the base DN for searching and/or authenticating
users.
User DN Pattern A DN pattern used to directly login users to the LDAP database. This
pattern is used for creating a DN string for "direct" user
authentication, where the pattern is relative to the base DN in the
LDAP URL.
The pattern argument { } is replaced with the username in runtime. 0
This works only if anonymous binding is allowed and a direct user
DN can be used (which is not the default case for Active Directory).
For example:
uid={0},ou=People
Search Filter A filter expression used to search for the user DN that is used in
LDAP authentication.
This is an LDAP search filter (as defined in 'RFC 2254') with optional
arguments. In this case, the is the only argument, username
denoted by . '{0}'
Possible examples are:
- this would search for a username match on the uid uid={0})
attribute.
Authentication to LDAP is performed from the DN found if successful.
Search Base Context name to search in, relative to the base DN in the ldapUrl.
This is parameter is optional
Manager DN Used only with "search" authentication method. It is the DN of the
user who binds to the LDAP server to perform the search.
Manager Password Used only with "search" authentication method. It is the password of
the user who binds to the LDAP server to perform the search.
Search Sub Tree Flag to enable deep search through the sub tree of the ldapUrl +
searchBase. True by default.
Auto Create Artifactory Users Whether or not to automatically create new users in Artifactory for
logged-in LDAP users and assign them default auto-join groups.
Avoiding Clear Text Passwords
Storing your LDAP password in clear text in on your disk is a big security threat, since this password is very sensitive and is settings.xml
used in SSO to other resources on the domain.
We strongly recommend, especially with LDAP, to use in your local settings. Artifactory's Encrypted Passwords
Preventing Authentication Fallback to the Local Artifactory Realm
As an administrator you might want users to authenticate only through LDAP with their LDAP password. However, if a user already has an
account in the internal database with a password, Artifactory utilizes fallback to use his database password when his LDAP password failed.
To prevent this scenario you can edit the specific user. Go to the Admin tab and then Security -> Users) and check
the Disable Internal Password checkbox.
Using LDAPS (Secure LDAP)
To use LDAPS, your LDAP server must have a valid certificate from a CA trusted by Java. No other setting is required, except using a secure
LDAP URL in your settings, e.g. ldaps://secure_ldap_host:636/dc=sampledomain,dc=com
However, if you want to use LDAPS with a non-trusted (self-signed) certificate, please follow these steps (thanks to Marc Schoechlin for
providing this information):
Download the CA of the ssl secured ldap server
openssl s_client -connect the.ldap.server.net:636 -showcerts > server.ca
Identify the CA certificate and keep only the ascii-text between BEGIN/END CERTIFICATE maker
Identify the standard file of your Java installation cacerts
Create a custom file by copying the file to the Artifactory configuration dir, e.g. cacerts cacerts
4.
5.
6.
7.
8.
1.
2.
3.
1.
cp /usr/lib64/jvm/java-1_6_0-ibm-1.6.0/jre/lib/security/cacerts /etc/artifactory
Import the CA certificate into the cacerts file customized
keytool -import -alias myca -keystore cacerts -trustcacerts -file server.ca
=> Password: changeit
=> Aggree for adding the certificate
Change permissions for the user artifactory
chown 755 /etc/artifactory/cacerts
chown artifactory:users /etc/artifactory/cacerts
Modify the defaults of the Artifactory JVM to use the custom file cacerts
echo "export JAVA_OPTIONS=\"\$JAVA_OPTIONS -Djavax.net.ssl.trustStore=/etc/artifactory/cacerts\"" >>
/etc/artifactory/default
Restart Artifactory
Security Descriptor
Direct Use of the Security Configuration Descriptor
The raw security configuration descriptor itself can be retrieved and manipulated through Artifactory's configuration or by using Artifactory's
REST API.
Getting or Saving the Security Descriptor through the UI
Go to the Admin tab and then and copy the security configuration from the text field. Advanced -> Security Descriptor
Getting and Saving the Security Descriptor through REST API
To retrieve configuration send a request to , e.g.: GET http://<host>:<port>/artifactory/api/system/security
curl -u admin:password -X GET -H "Accept: application/xml"
http://localhost:8080/artifactory/api/system/security
To set configuration send a request to with the configuration data, POST http://<host>:<port>/artifactory/api/system/security
e.g.:
curl -u admin:password -X POST -H "Content-Type: application/xml" --data-binary
@artifactory.config.xml http://localhost:8080/artifactory/api/system/security
NOTE!that you must provide admin privileges with the request.
Bootstrapping security using security.import.xml
Artifactory stores all security-related information as part of its internal storage. It is possible to bootstrap Artifactory with predefined security
configuration by creating a file that contains Artifactory-exported security information. $ARTIFACTORY_HOME/etc/security.import.xml
Directly editing the security configuration descriptor is an advanced feature that can wipe all your security configuration! Make sure you
know what you are doing and keep a backup of the configuration.
Once Artifactory sees this file at startup, it uses the information in the file to all security settings. This can be useful if you want to copy override
security configuration between different Artifactory instances.
System Properties
artifactory.system.properties
Artifactory includes a convenient method for specifying system properties. Rather than configuring properties in the JVM runtime configuration of
the hosting container, you can edit the file and restart Artifactory. $ARTIFACTORY_HOME/etc/artifactory.system.properties
Artifactory-specific properties start with the prefix and their meaning is documented in comments in the default artifactory. artifactory.s
file which can be found in the above path. ystem.properties
As these settings impact the entire container VM, it is recommended to use this feature primarily for specifying Artifactory-related properties only
(such as changing the database used by Artifactory, etc.).
Exposing Maven Indexes
Overview
Artifactory exposes Maven indexes for use by Maven integrations of common IDEs (IntelliJ IDEA, NetBeans, Eclipse).
Indexes are fetched remotely for remote repositories that provide them (many do not, or do not keep an updated index) and are calculated for
local and virtual repositories.
If Artifactory cannot find a remote index, it calculates one locally, based on the remote repository's previously cached artifacts.
Usage
To administer Maven indexes go to the Admin tab and then . Services -> Indexer
You can control how often local indexing calculation and remote index fetching runs and what repositories are included in index calculation.
Setting properties in is an advanced feature and is typically not required. artifactory.system.properties
Do not confuse these setting with those in the $ARTIFACTORY_HOME/data/artifactory.properties
file, which are for internal use.
Artifactory's search and indexing facilities are not related to Maven indexes
The indexing performed by Artifactory is secure, immediately effective and supports a larger variety of search options, including
custom metadata searches.
Maven indexes exist in Artifactory for the purpose IDE integrations only and are calculated periodically, contain a limited set of data
and are non-secure by design.
Information about the content of a repository is exposed to anyone with access to the repository's index, regardless of any effective
path permission you have in place. If this is a concern, do not expose an index for that repository.
1.
Clustering Artifactory
Artifactory Active/Passive Architecture
Overview
Artifactory Active/Passive architecture allows achieving High Availability (HA) and fast disaster recovery.
Artifactory supports two types of HA architectures
Deployment on fault-tolerant storage
Periodical cross-server data sync.
The first option is strongly recommended.
Deployment on Fault-tolerant Storage
Using a fault-tolerant disk mounted on another machine allows fast recovery with short MTR (Mean Time to Recovery). Once Artifactory is
deployed on NAS or SAN it becomes highly available as long as the other machine can immediately mount the storage, bootstrap Artifactory
from it and start accepting requests and not from the failing one.
To achieve this setup quickly and efficiently, it is recommended to use the built-in Virtual Machine Failover feature offered by virtualization
software providers as part of their HA solution.
Indexing can be expensive
NOTE! that calculating and indexing for a repository may be a resource-hungry operation, especially for a large local repository or if
the repository is a virtual one containing other underlying repositories. Therefore, do not include repositories that do not require
indexing for the period index calculation.
1.
2.
3.
1.
2.
Create a VM image that runs the Artifactory startup script and mounts the HA storage
The storage should contain the Artifactory installation and data (everything under $ARTIFACTORY_HOME)
Use the VM image on two Virtual Machines and have Artifactory running on one machine while the other
machine is readily available as a failover target by the virtualization HA monitor.
Cross-server Data Synchronization
In case this is not possible (or redundancy is required), fault-tolerance can be achieved by correctly replicating the data folder to a warm standby.
The setup of up-to-date passive replication server for active Artifactory server requires database replication and file system directories sync.
Syncing the Data and Configuration Directories
It is required to rsync two directories under $ARTIFACTORY_HOME: data and etc.
To achieve this, perform the rsync command on $ARTIFACTORY_HOME, excluding the directories that are not required.
Set out below is a simple example of such a command:
/usr/bin/rsync -vvah --del --progress --log-file=/home/replication/replication.log
--exclude-from=rsync-excludes.txt
artifactory@active-artifactory-host:$ARTIFACTORY_HOME/ $ARTIFACTORY_HOME/
In such a case the rsync-excludes.txt file appears as follows:
/work/
/data/tmp*/
/data/cache/
/logs/
NOTE!that the rsync should be executed from the passive stand-by server.
Syncing the Database
NOTE! that the database replication must run executing rsync. before
Each database provides its own procedures for the sync. Please consult the specific database vendor documentation for further reference.
For example, MySQL Replication HowTo guide can be found . here
It is also possible to use a full dump/restore procedure on the database to synchronize the database and filestore state. In this situation, it is
recommended to perform the dump in a single routine with rsync (in case of File System Storage Types).
Time Synchronization on Standby Server
Time synchronization on the standby serveris very important to sync timewise between the metadata stored in the database and the data stored
on the file system.
A straightforward method to achieve this, is to make sure the database is in a state that is to the file system (data/filestore) state. prior
This allows you to:
Make a database dump before executing filesystem sync,
Activate database replication on demand just before executing rsync.
Since the sync operations are not atomic, there might be a gap between the data from rsync and data from database replication.
The following should be noted:
The time snapshot that Artifactory is set to is the database replication time.
Items synced to the filesystem which have no representation in the database can be purged by clicking on Prune Unreferenced Data
2.
from the Admin tab and then in the Artifactory configuration. Advanced -> Maintenance
The Artifactory Log Files
Overview
Artifactory log files are found under the folder. ARTIFACTORY_HOME/logs
The following log files are available:
artifactory.log - The main Artifactory log file containing output about the Artifactory server activity.
access.log - Security log containing important information about accepted and denied requests, as well as configuration changes,
password reset requests etc., including the originating IP address for each event.
request.log - Generic http traffic information, similar to the Apache HTTPd request log.
import-export.log - A log used for tracking the process of long-running import and export commands.
Configuring Log Verbosity
Artifactory relies on the for its logging. Logger configuration can be changed in the Logback file: Logback Framework ARTIFACTORY_HOME/etc
. /logback.xml
Viewing Log Files from the UI
Artifactory supports monitoring log files from the configuration, as well as downloading the current log files from the browser.
Log files are viewable from the Admin tab then . You can select which log to tail or download from the drop-down Advanced -> System Logs
menu.
Tomcat/Servlet container-secific log files
When running Artifactory inside an existing servlet container, the container typically has its own log files.
These files normally contain additional information to that in or application bootstrapping-time information that is artifactory.log
not part of the Artifactory logs.
In Tomcat, these files are and , respectively. catalina.out localhost.yyyy-mm-dd.log
The log tail view is automatically refreshed every few seconds.
System Information
Overview
Admin users can view Artifactory system information. Go to the Admin tab and then . Advanced -> System Info
The information includes the JVM runtime parameters, JVM arguments and memory usage.
This is useful for examining the runtime aspects of Artifactory and is a valuable resource when reporting Artifactory issues.
To save system resources, do not leave the log view open in your browser unnecessarily.
Maintenance
Overview
To set up various operations that globally impact the system go to the Admin tab and then : Advanced -> Maintenance
Section Description
Garbage Collection Artifactory uses a checksum-based storage and stores identical
binary files only once.
When a new file is deployed, Artifactory checks if a binary with the
same checksum already exists and links the repository path to this
binary if it exists. Upon deletion of a repository path, Artifactory does
not delete the binary because it might be used by other paths.
The garbage collector is responsible to delete unused binaries. The
default garbage collection is set to periodically every 4 hours to
collect unused (deleted) binaries from the datastore and dispose os
them.
Garbage collection works by specifying a valid expression. For cron
example, to execute the garbage collector every 12 hours use a
value of:
0 0 /12 * * ?
Do not set the cron expression interval too often as it may
compromise the overall performance of the system.
Storage Quota Limits The storage quota limits provide a method to set a limit on the entire
system storage disk space.
By enabling a storage quota youcontribute to the
reliability and availability of the server filesystem and
ensure that its capacity is not used up completely.
If and when the storage disk space has reached the limit percentage
configured, all future deployments are rejected with status code
413and an admin receives an error message at the bottom of the
configuration page:
You can also set the warning level percentage above which you are
notified, before the actual deployments are blocked.
A warning is displayed in your$ARTIFACTORY_HOME/logs/artifac
file and an admin receives a warning message at the bottom tory.log
of the configuration page:
Cleanup Unused Cached Artifacts You can automatically and periodically remove unused artifacts from
remote repository caches according to each remote repository 'Keep
Unused Artifacts' policy.
You can also run the cleanup manually by clicking on
the 'Run Unused Cached Artifacts Cleanup' button. To
configure a specific remote repository cleanup policy, seeManaging
. Caches
Cleanup works by specifying a valid expression. For example, Cron
to run the cleanup job every 12 hours use a value of:
0 0 /12 * * ?
With a filesystem storage the partition checked is one
containing the dir '$ARTIFACTORY_HOME/data/filestore'
ectory.
With a database blob storage the partition checked is one
containing the direc '$ARTIFACTORY_HOME/data/cache'
tory.
Storage Compress the Internal Database
If the default Derby database is used, this action reclaims unused
and allocated space in a table and its indexes. Typically, unused
allocated space exists when a large amount of data is deleted from a
table or indexes are updated.
By default,Derbydoes not return unused space to the
operating system. For example, once a page has been
allocated to a table or index, it is not automatically
returned to the operating system until the table or index
is destroyed.
Prune Unreferenced Data
Remove unreferenced binary files and empty folders present in the
filestore or cache folders.
Such inconsistency may occur as a result of running
with wrong file system permissionson storage folders
or due to running out of storage space.
Working with Maven
Overview
There are two aspects to configuring Maven for use with Artifactory (or with any repository):
1. Setting up Maven to resolve artifacts from, and only from, Artifactory.
2. Setting up Maven for deploying artifacts to the various repositories hosted by Artifactory.
This section covers these aspects:
Configuring Artifacts Resolution
Configuring Deployment
Configuring Artifacts Resolution
Auto Settings Generation
The easiest way to set up Maven to use Artifactory is to use the automatic settings generator from the Home tab and then Client Settings
. -> Maven Settings
Generate and save the file into your Maven home directory. settings.xml
This feature is only relevant when using the internal Derby
DB.
Please run this when Artifactory activity is low, as
compression may not be able to complete when storage is
busy (failure to complete will have no effect on the
storage).
It is also recommended to always shutdown Artifactory
correctly to avoid these errors from occurring.
Field Name Description
Releases The repository of the chosen releases.
Snapshots The repository of the chosen snapshots.
Plugin Releases The repository of the chosen plugins releases.
Plugin Snapshots The repository of the chosen plugins snapshots.
Mirror Any Mark this checkbox if you want to mirror the repository.
Provisioning Dynamic Settings for Users
You can deploy and provision a dynamic settings template for your users.
Once downloaded, settings are generated according to your own logic and can automatically include user
authentication information.
Refer to the section under Filtered Resources. Provisioning Build Tool Settings
The Default Global Repository
The simplest way for setting up Maven to use Artifactory proxy is to configure a Maven repository with the following URL:
<host>:<port>/artifactory/repo
This URL is Artifactory's built-in global virtual repository and it lets Artifactory search through all repositories (local and remote), for any artifacts
Maven is fetching.
You can create and use a dedicated virtual (or local) repository to limit Artifactory searches to that specific repository.
The Maven repository URL should appear as:
<host>:<port>/artifactory/<repo_name>
Overriding the Built-in Repositories
If your Artifactory is configured correctly, you should override the built-in central and snapshots repositories of Maven, so that no request is ever
sent directly to them.
Insert the following into your parent POM or settings.xml (under an active profile):
<repositories>
<repository>
<id>central</id>
<url> http://[host]:[port]/artifactory/libs-release </url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>snapshots</id>
<url> http://[host]:[port]/artifactory/libs-snapshot </url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url> http://[host]:[port]/artifactory/plugins-release </url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>snapshots</id>
<url> http://[host]:[port]/artifactory/plugins-snapshot </url>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
Additional "Mirror-any" Setup
You can use the "Mirror Any" feature of the previous setup, and have Artifactory act as a redirecting proxy for any Maven repository, on top
including those defined inside POMs of plug-ins and third party dependencies (although this is bad practice, but unfortunately, not uncommon).
This ensures no unexpected requests are made to external repositories introduced by such POMs.
Insert the following into your settings.xml:
<mirrors>
<mirror>
<id>artifactory</id>
<mirrorOf>*</mirrorOf>
<url> http://[host]:[port]/artifactory/repo </url>
<name>Artifactory</name>
</mirror>
</mirrors>
Caveat
Do not use "Mirror Any" as your only resolution rule. Use it to enforce any artifacts resolution to be made strictly through Artifactory.
The "Mirror Any" proxying configuration works for defined repositories. It supersedes, but does not hide, the built-in and re central snapshots
positories, unless overridden by the user.
It defines a coarse-grained proxying rule that does not differentiate between releases and snapshots and relies on the defined repositories to do
this resolution filtering.
Configuring Authentication
You can uncheck the Global Anonymous Access checkbox from the Admin tab and then and use secure downloads Security -> General
with Maven.
Users must have Read Access on repositories they want to resolve artifacts from. You must also ensure your file contains a settings.xml se
definition with the repository ID used for artifacts resolution (downloads) and with valid user name and password. rver
Artifactory offers a unique feature that ensures you do not have to use clear text passwords in your settings, so it is
highly recommended to use this feature.
Watch the Screencast
Configuring Deployment
Setting Up a Deployment Descriptor
To deploy Artifactory you must add a deployment descriptor to your POM with the URL of a target local repository to deploy to. This is standard
Maven practice.
Artifactory can make the process easier by providing you the "Distribution Management" snippet when selecting a
local repository in the tree view (Browse ->Tree Browser).
Synchronizing Authentication Details for Same-URL Repositories
When using authenticated downloads Maven uses the user name and password defined in your to authenticate settings.xml
against Artifactory repositories.
Your settings.xml may contain other server definitions (with different server IDs) used for authenticating
to deployment repositories or to other download repositories.
If you have repository definitions (either for deployment or download) that are using , Maven takes the authentication the same URL
details (from the matching server definition) of the first repository encountered and uses it for the life-time of the running build for all
repositories with the same URL.
This might cause authentication to fail if you are using different authentication details between such
repositories, and you might receive 401 errors for your downloads or deployments. Unfortunately, this is an
inherent Maven problem which is beyond the control of Artifactory and the only solution is to use the same authentication details in
your if they are going to be used by same-URL repositories. settings.xml
Setting Up Security
For deploying, unless anonymous deployments are allowed on the target local repository (which is unlikely), you must also make sure your sett
file contains a definition with the repository ID used in the and with a valid deployer user name ings.xml server distributionManagement
and password.
Artifactory offers a unique feature to ensure you do not have to use clear text passwords in your settings, so it is
highly recommended to use this feature.
Watch the Screencast
Working with Gradle
Working with Gradle and Artifactory
For Gradle to work with Artifactory, you only require a properly configured script file. build.gradle
To avoid dwelling on configuration details we shall just mention the main configuration steps and show a sample
Gradle script that we believe shows all the required information needed to get you started.
It also demonstrates the effectiveness and brevity of Gradle.
Remember that Virtual Repositories are virtual. They cannot be deployed to or used inside a deployment descriptor.
1.
2.
3.
4.
5.
6.
that this build script is used for building the NOTE! Build Integration project as is also available in source control.
Resolution Configuration
Using Artifactory's Gradle Init Script Generator
With Artifactory's Gradle init script generator, you can easily create a Gradle init script that handles resolution. To do so go to the Home tab and
then : Client Settings -> Gradle Init Script
Provisioning Dynamic Settings for Users
You can deploy and provision a dynamic settings template for your users. Once downloaded, settings are generated according to your own logic
and can automatically include user authentication information.
Refer to section under Filtered Resources. Provisioning Build Tool Settings
Manual Configuration Steps
Define the Artifactory repository to be used by Gradle for artifacts resolution.
Optionally provide credentials in case you do not allow anonymous artifact downloads on the Artifactory repository.
Define the local repository in Artifactory to which module artifacts are to be deployed.
Optionally provide deployment credentials.
If you would also like Gradle to auto-generate a POM file for your artifacts, define the Maven artifact attributes, and -
Define local Artifactory repository to be used for POM deployment (typically this would be the same as the one used for Gradle/Ivy
artifacts).
Sample Build Script and Properties
This section describes a manual integration of Gradle with Artifactory and works for Gradle 0.8.
For Gradle version 0.9-preview-3 and above it is recommended to use the for publication Gradle Artifactory Plugin
build.gradle
usePlugin('java')
usePlugin('maven')
group = 'org.jfrog.buildinfo'
version = '1.0'
/*
(5) Define the Maven attributes that will be used for POM auto-generation
*/
def artifactId = projectDir.name
def groupId = group
def versionNumber = version
dependencies {
compile group: 'com.thoughtworks.xstream', name: 'xstream', version: '1.3.1'
compile group: 'com.google.collections', name: 'google-collections', version:
'1.0-rc5'
}
/*
(1) Define an Artifactory virtual repository used for dependency resolution
*/
repositories {
/*
(2) An optional login/password (will is kept in gradle.properties) and used to
authenticate a reader to Artifactory.
USER, PASSWORD and REALM are coming from gradle.properties
Uncomment if anonymous access is not allowed.
*/
//org.apache.ivy.util.url.CredentialsStore.INSTANCE.addCredentials(REALM, HOST,
USER, PASSWORD);
mavenRepo urls: "http://localhost:8080/artifactory/libs-releases";
}
uploadArchives {
repositories {
/*
(6) This will be used to deploy the Gradle artifact and ivy modules
*/
mavenRepo urls: "http://localhost:8080/artifactory/libs-release-local";
/*
(3) Use this to also deploy an auto-generated POM
*/
repositories.mavenDeployer {
repository(url: "http://localhost:8080/artifactory/libs-release-local") {
/*
(4) The login/password of an Artifactory user with deploy privileges.
USER and PASSWORD are coming from gradle.properties
*/
authentication(userName: USER, password: PASSWORD)
}
pom.version = versionNumber
pom.artifactId = artifactId
pom.groupId = groupId
}
}
}
1.
And the properties file under the same directory:
gradle.properties
HOST=localhost
REALM=Artifactory Realm
USER=admin
PASSWORD=password
Running Gradle
The following clause is required for gradle to recognize Artifactory.
To build your project and upload the generated artifacts to Artifactory, run:
gradle uploadArchives
Please refer to the for more detailed information on building with Gradle (running sub-tasks etc.). Gradle Documentation
Getting Debugging Information from Gradle
If you experience problems, it is highly recommended to run Gradle with the option. This typically provides useful readable information on -d
what went wrong.
Dependency Declaration Snippets
Click on the Artifacts tab to use the Artifactory configuration to obtain dependency declaration snippets by selecting either an artifact and copying
the "Gradle Dependency Declaration" section into your build.gradle file.
Gradle Artifactory Plugin
Overview
Artifactory offers full integration with Gradle via two methods:
Build Server Integration - When running Gradle builds in your continuous integration build server, it is recommended to use one of the
1.
2.
a.
b.
c.
d.
for Jenkins, TeamCity or Bamboo to configure resolution and publishing to Artifactory with build-info capturing, via Artifactory Plugins
your build server UI.
Standalone Integration - As described below, for when running standalone Gradle build scripts using the Gradle Artifactory plugin.
The Gradle Artifactory plugin offers a simple DSL to perform the following as part of your Gradle build:
Define default dependency resolution from Artifactory
Define configurations whose artifacts to be published to Artifactory after a full (multi-module) successful build
Define properties that to be attached to published artifacts in Artifactory metadata
Capture and publish a object to Artifactory build-info REST API to provide a fully traceable build context build-info
Gradle Compatibility
Plugin Version Compatible with Gradle
2.0.4 gradle-1.0-milestone-3
2.0.5 gradle-1.0-milestone-4
2.0.6 gradle-1.0-milestone-3
2.0.10 gradle-1.0-milestone-6
2.0.11 gradle-1.0-milestone-7
2.0.12 gradle-1.0-milestone-8 and above
2.0.17 gradle-1.0 and above
Downloading and Installing the Artifactory Plugin
Add a repository, which has the plugin and the dependency which includes it. For example:
buildscript {
repositories {
maven { url 'http://dl.bintray.com/jfrog/jfrog-jars' }
}
dependencies {
classpath(group: 'org.jfrog.buildinfo', name: 'build-info-extractor-gradle',
version: '2.1.0')
}
}
The above script automatically downloads the plugin and makes it available to the of your projects. buildScript
Adding the Plugin to Your Project(s)
In order to apply the plugin in your Gradle projects, the following closure must be declared in your script: build.gradle
apply plugin: 'artifactory'
In a multi-project build, you might want to apply the plugin to all projects:
allprojects {
apply plugin: 'artifactory'
}
Configuration
Using the Artifactory Plugin DSL
The Gradle Artifactory plugin can be configured using its own convention DSL inside the script of your root project. build.gradle
The syntax of the Convention DSL is shown below.
artifactory {
+contextUrl = 'http://repo.myorg.com/artifactory' //The base Artifactory URL if
not overridden by the publisher/resolver
publish {
contextUrl = 'http://repo.myorg.com/artifactory' //The base Artifactory URL for
the publisher
//A closure defining publishing information
repository {
+repoKey = 'integration-libs' //The Artifactory repository key to publish to
+username = 'deployer' //The publisher user name
password = 'deployerPaS*' //The publisher password
ivy {
//Optional section for configuring Ivy publication (when publishIvy = true).
Assumes Maven repo layout if not specified
ivyLayout = '[organization]/[module]/[revision]/[type]s/ivy-[revision].xml'
artifactLayout =
'[organization]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]'
mavenCompatible = true //Convert any dots in an [organization] layout value to
path separators, similar to Maven's groupId-to-path conversion. True if not specified
}
}
defaults {
//This closure defines defaults for all 'artifactoryPublish' tasks of all
projects the plugin is applied to
publishConfigs ('a','b','foo') //Optional list
of configurations (names or objects) to publish.
//The
'archives' configuration is used if it exists and no configuration is specified
mavenDescriptor = '/home/froggy/projects/proj-a/fly-1.0.pom' //Optional
alternative path for a POM to be published (can be relative to project baseDir)
ivyDescriptor = 'fly-1.0-ivy.xml' //Optional
alternative path for an ivy file to be published (can be relative to project baseDir)
properties = ['qa.level': 'basic', 'q.os': 'win32, deb, osx'] //Optional map
of properties to attach to all published artifacts
properties { //Optional
closure to attach properties to artifacts based on a list of artifact patterns per
project configuration
foo '*:*:*:*@*', platform: 'linux', 'win64' //The property
platform=linux,win64 will be set on all artifacts in foo configuration
archives 'org.jfrog:*:*:*@*', key1: 'val1' //The property
key1=val1 will be set on all artifacts part of the archives configuration and with
group org.jfrog
all 'org.jfrog:shared:1.?:*@*', key2: 'val2', key3: 'val3' //The
properties key2 and key3 will be set on all published artifacts (all configurations)
with group:artifact:version equal to org.jfrog:shared:1.?
}
publishBuildInfo = true //Publish build-info to Artifactory (true by
default)
publishArtifacts = true //Publish artifacts to Artifactory (true by default)
publishPom = true //Publish generated POM files to Artifactory (true
Mandatory items within the relevant context are prefixed with '+'. All other items are optional.
by default)
publishIvy = false //Publish generated Ivy descriptor files to
Artifactory (false by default)
}
}
resolve {
contextUrl = 'http://repo.myorg.com/artifactory' //The base Artifactory URL for
the resolver
repository {
+repoKey = 'libs-releases' //The Artifactory (preferably virtual) repository
key to resolve from
username = 'resolver' //Optional resolver user name (leave out to use
anonymous resolution)
password = 'resolverPaS*' //The resolver password
maven = true //Resolve Maven-style artifacts and descriptors
(true by default)
ivy {
//Optional section for configuring Ivy-style resolution. Assumes Maven repo
layout if If not specified
ivyLayout = ...
artifactLayout = ...
mavenCompatible = ...
}
}
1.
2.
3.
}
}
The Properties Closure DSL
The closure in and task accept the following syntax: properties artifactory.publish.defaults artifactpryPublish
properties {
configuration 'group:module:version:classifier@type', key1:'value1',
key2:'value2', ...
}
A configuration that is a valid name of a configuration of the project. You can use to apply the properties to all configurations. all
An artifact specification filter for matching the artifacts to which properties should be attached. The filter may
contain wildcards: * for all characters or ? for a single character.
A list of key/value(s) properties that are attached to to the published artifacts matching the filter.
The Artifactory Project Publish Task
Behind the scenes the Gradle Artifactory Plugin creates an ' ' Gradle task for each project the plugin is applied to. artifactoryPublish
The is configured by the closure of the plugin. artifactoryPublish publish
You can configure the project-level task directly with the task's closure, which uses identical Syntax to that of the artifactoryPublish
plugin's closure. publish
artifactoryPublish {
skip = false //Skip build info analysis and publishing (false by default)
publishConfigs ('a','b','c')
mavenDescriptor = '/home/froggy/projects/proj-a/fly-1.0.pom'
ivyDescriptor = 'fly-1.0-ivy.xml'
properties = ['qa.level': 'basic', 'q.os': 'win32, deb, osx']
properties {
c '**:**:**:*@*', cProperty: 'only in c'
}
}
Controlling the Published Modules
To control which modules of a multi-module build are published to Artifactory:
Do not apply the ' ' plugin to project so that it does not publish anything. artifactory
This cannot be performed for the root project that contains the convention object, and so must have the plugin applied. NOTE!
Manually activate the corresponding ' ' Gradle task for each project you wish to. artifactoryPublish
For example in our you can run: Gradle project example ./gradlew clean api:artifactory:publish
shared:artifactoryPublish
Use the flag to deactivate analysis and publication. artifactoryPublish.skip
Controlling BuildInfo's Build Name and Build Number
By default, BuildInfo is published with a build name that is the name of your root project and a build number that is the start date of the build.
You can control the build name and build number values by specifying the following properties, respectively:
buildInfo.build.name=my-super-cool-build
buildInfo.build.number=r9001
The above properties are specified as standard . Gradle Properties
Watch the Screencast
To see the Gradle Artifactory Plugin in action you can watch the following screencast below.
Gradle 1.6 Publishing Artifactory Plugin
Overview
Since Gradle 1.6 the new publishing model for Ivy and Maven publications is fully supported by the new 'artifactory-publish' plugin.
The Gradle Artifactory plugin version supporting this new model is 2.1.0 or above.
Gradle Compatibility
Plugin Version Compatible with Gradle
2.1.0 gradle-1.6 and above
Downloading and Installing the Artifactory Plugin
Manual Installation
The latest plugin jar file can be downloaded from and copy it to your gradle home plugins directory . here ~/.gradle/plugins
And add the following to your project:
buildscript.dependencies.classpath files(new File(gradle.gradleUserHomeDir,
'plugins/build-info-extractor-gradle-2.1.0-uber.jar'))
Automatic Installation
Alternatively, you can add to your Gradle scripts to fetch the plugin using the standard Ivy resolution. For example:
buildscript {
repositories {
maven { url 'http://repo.jfrog.org/artifactory/gradle-plugins' }
}
dependencies {
classpath(group: 'org.jfrog.buildinfo', name: 'build-info-extractor-gradle',
version: '2.1.0')
}
}
The above script will automatically download the plugin, and make it available to the of your projects. buildScript
Adding the Plugin to Your Project(s)
This page describes a new `artifactory-publish` plugin, which is supported along side with the classic `artifactory` plugin. New Gradle
versions are supported by both plugins. For documentation of the `artifactory` plugin, please see . this page
In order to apply the plugin in your Gradle projects, the following closure needs to be declared in your script: build.gradle
apply plugin: 'artifactory-publish'
In a multi-project build, you'd want to apply the plugin to all projects:
allprojects {
apply plugin: 'artifactory-publish'
}
Configuration
Using the Artifactory Plugin DSL
The Gradle Artifactory plugin can be configured using its own convention DSL inside the script of your root project. build.gradle
The syntax of the Convention DSL is described below.
artifactory {
+contextUrl = 'http://repo.myorg.com/artifactory' //The base Artifactory URL if
not overridden by the publisher/resolver
publish {
contextUrl = 'http://repo.myorg.com/artifactory' //The base Artifactory URL for
the publisher
//A closure defining publishing information
repository {
+repoKey = 'integration-libs' //The Artifactory repository key to publish to
+username = 'deployer' //The publisher user name
password = 'deployerPaS*' //The publisher password
ivy {
//Optional section for configuring Ivy publication (when publishIvy = true).
Assumes Maven repo layout if not specified
ivyLayout = '[organization]/[module]/[revision]/[type]s/ivy-[revision].xml'
artifactLayout =
'[organization]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]'
mavenCompatible = true //Convert any dots in an [organization] layout value to
path separators, similar to Maven's groupId-to-path conversion. True if not specified
}
}
defaults {
//This closure defines defaults for all 'artifactoryPublish' tasks of all
projects the plugin is applied to
publications ('ivyJava','mavenJava','foo') //Optional list
of publications (names or objects) to publish.
properties = ['qa.level': 'basic', 'q.os': 'win32, deb, osx'] //Optional map
of properties to attach to all published artifacts
properties { //Optional
closure to attach properties to artifacts based on a list of artifact patterns per
project publication
foo '*:*:*:*@*', platform: 'linux', 'win64' //The property
platform=linux,win64 will be set on all artifacts in foo publication
mavenJava 'org.jfrog:*:*:*@*', key1: 'val1' //The property
key1=val1 will be set on all artifacts part of the mavenJava publication and with
Mandatory items within the relevant context are prefixed with '+'. All other items are optional.
group org.jfrog
all 'org.jfrog:shared:1.?:*@*', key2: 'val2', key3: 'val3' //The
properties key2 and key3 will be set on all published artifacts (all publications)
with group:artifact:version equal to org.jfrog:shared:1.?
}
publishBuildInfo = true //Publish build-info to Artifactory (true by
default)
publishArtifacts = true //Publish artifacts to Artifactory (true by default)
}
}
resolve {
contextUrl = 'http://repo.myorg.com/artifactory' //The base Artifactory URL for
the resolver
repository {
+repoKey = 'libs-releases' //The Artifactory (preferably virtual) repository
key to resolve from
username = 'resolver' //Optional resolver user name (leave out to use
anonymous resolution)
password = 'resolverPaS*' //The resolver password
maven = true //Resolve Maven-style artifacts and descriptors
(true by default)
ivy {
//Optional section for configuring Ivy-style resolution. Assumes Maven repo
layout if If not specified
ivyLayout = ...
artifactLayout = ...
mavenCompatible = ...
}
}
}
// Redefine basic properties of the build info object
clientConfig.setIncludeEnvVars(true)
clientConfig.info.addEnvironmentProperty('test.adding.dynVar',new
java.util.Date().toString())
clientConfig.info.setBuildName('new-strange-name')
clientConfig.info.setBuildNumber('' + new
1.
2.
3.
java.util.Random(System.currentTimeMillis()).nextInt(20000))
}
The Properties Closure DSL
The closure in and task accept the following syntax: properties artifactory.publish.defaults artifactoryPublish
properties {
publicationName 'group:module:version:classifier@type', key1:'value1',
key2:'value2', ...
}
A publication that is a valid name of a publication of the project. You can use to apply the properties to all publications. all
An artifact specification filter for matching the artifacts to which properties should be attached. The filter may contain wildcards: for all *
characters or for a single character. ?
A list of key/value(s) properties that will be attached to to the published artifacts that match the filter.
The Artifactory Project Publish Task
Behind the scenes the Gradle Artifactory Plugin creates an ' ' Gradle task for each project the plugin is applied to. The artifactoryPublish ar
is configured by the closure of the plugin. You can configure the project-level task directly with the task's tifactoryPublish publish artifa
closure, which uses identical Syntax to that of the plugin's closure. ctoryPublish publish.defaults
artifactoryPublish {
skip = false //Skip build info analysis and publishing (false by default)
publications ('a','b','c')
properties = ['qa.level': 'basic', 'q.os': 'win32, deb, osx']
properties {
c '**:**:**:*@*', cProperty: 'only in c'
}
}
Controlling the Published Modules
To control which modules of a multi-module build, will be published to Artifactory you can:
Do not apply the ' ' plugin to project should not publish anything. Note: This cannot be done for the root project that artifactory
contains the convention object, and so needs the plugin applied.
Manual activate the corresponding ' ' Gradle task for each project you wish to. For example in our artifactoryPublish Gradle project
you can run: example ./gradlew clean api:artifactory:publish shared:artifactoryPublish
Use the flag to deactivate analysis and publication. artifactoryPublish.skip
Controlling BuildInfo's Build Name and Build Number
By default, BuildInfo will be published with a build name that is the name of your root project and a build number that is the start date of the build.
You can control the build name and build number values by specifying the following properties, respectively:
buildInfo.build.name=my-super-cool-build
buildInfo.build.number=r9001
The above properties are specified as standard . Gradle properties
You can also control the values from inside the convention object DSL like showed at the bottom of the DSL code.
Watch the Screencast
To see the Gradle Artifactory Plugin in action you can watch the following screencast below.
1.
2.
3.
1.
2.
Gradle Artifactory Plugin using the snapshot version
Downloading and Installing the snapshot version of the Artifactory Plugin
Manual Installation
The latest plugin jar file can be downloaded from . here
Automatic Installation
Alternatively, you can add to your Gradle scripts the following to fetch the plugin using the standard Ivy resolution. For example:
buildscript {
repositories {
maven { url 'http://repo.jfrog.org/artifactory/gradle-plugins-snapshots' }
}
dependencies {
classpath(group: 'org.jfrog.buildinfo', name: 'build-info-extractor-gradle',
version: '2.1.x-SNAPSHOT')
}
configurations.classpath {
resolutionStrategy {
failOnVersionConflict()
cacheDynamicVersionsFor 0, 'seconds'
cacheChangingModulesFor 0, 'seconds'
}
}
}
The above script automatically downloads the plugin and makes it available to the of your projects. buildScript
Working with Ivy
Setting up Ivy to work with Artifactory
To enable Ivy to work with Artifactory, the following files must be present and configured:
The Ivy settings - - used to configure artifact resolution and deployment using repositories in Artifactory. ivysettings.xml
The Ivy modules - - where the project's modules and dependencies are declared. ivy.xml
The Ant build - - which is used to execute the ANT tasks that will, in turn, use Ivy for artifact resolution and deployment. build.xml
Ivy Settings - ivysettings.xml
The file holds a chain of Ivy resolvers used for both resolution and publishing (deployment). Resolvers exist for both regular ivysettings.xml
artifacts and Ivy module files.
There are a two options to set up Ivy to work with Artifactory by configuring resolvers in : ivysettings.xml
Automatically using the Artifactory's Ivy settings generator, or
Manually defining Ibiblio and URL resolvers.
Automatic Settings with Artifactory's Ivy Settings Generator
To begin quickly, you can use Artifactory's Ivy settings generator to define credentials and resolver settings. This generates a URL resolver
suitable for both deployment and resolution.
Provisioning Dynamic Settings for Users
You can deploy and provision a dynamic settings template for your users.
Once downloaded, settings are generated according to your own logic and can automatically include user authentication information.
Refer to section under Filtered Resources. Provisioning Build Tool Settings
Manual Resolver Definitions
The iBiblio Resolver
This resolver is used strictly for dependency resolution. By default, it assumes artifacts in your repository are laid-out in the popular standard
Maven 2 format (which may not always be the case).
The ibiblio resolver can resolve artifacts from remote Maven 2 HTTP repositories and if you use version ranges it
relies on maven-metadata.xml files in the remote repository to gather information on the available versions.
To use the ibiblio resolver add the following to your : ivysettings.xml
<resolvers>
<ibiblio name="artifactory" m2compatible="true"
root="http://localhost:8080/artifactory/libs-releases"/>
</resolvers>
The URL Resolver
The URL resolver can be used for dependency resolution and/or of both regular artifacts and Ivy module files. deployment
To publish or resolve artifacts to/from Artifactory configure a URL resolver with the pattern that matches your target repository layout for both Ivy
and artifact files, e.g.:
The URL must point at an Artifactory repository. In this case, the pre-configured 'libs-releases' virtual repository. root
The m2compatible property pre-configures the resolver with an artifact pattern that follows the Maven 2
standard layout.
<!-- Authentication required for publishing (deployment). 'Artifactory Realm' is the
realm used by Artifactory so don't change it. -->
<credentials host="localhost" realm="Artifactory Realm" username="admin"
passwd="password"/>
<resolvers>
<url name="artifactory-publish">
<!-- You can use m2compatible="true" instead of specifying your own pattern
-->
<artifact pattern=
"http://localhost:8080/artifactory/libs-snapshot-local/[organization]/[module]/[revisi
on]/[artifact]-[revision].[ext]"/>
<ivy
pattern="http://localhost:8080/artifactory/libs-snapshot-local/[organization]/[module]
/[revision]/ivy-[revision].xml" />
</url>
</resolvers>
Using a Chain Resolver
You can mix resolvers under a chain resolver in Ivy which uses sub-resolvers for dependency resolution and publishing.
Refer to the . Relevant Ivy Documentation
Ivy Modules - ivy.xml
ivy.xml files contain a list of dependency declarations that are required to be resolved for the build.
Under the Artifacts tab of the configuration, you can obtain dependency declaration snippets by selecting either an
Ivy module or a POM artifact and copying the "Ivy Dependency Declaration" section into your ivy.xml file.
The URL resolver uses HTML href analysis to learn about the available versions of a remote artifact. This is a less reliable method
compared to the iBiblio resolver way, though it works well with remote Artifactory servers.
Ant Build - build.xml
To work with Ivy for dependency resolution you must use in your file. This will load the . <ivy:configure/> build.xml ivysettings.xml
The resolution of artifacts is done using <ivy:retrieve/>.
Refer to the for more detailed information. Ivy Documentation
Publishing to Artifactory
In order to publish to Artifactory the command must be used. Ivy uses the configured resolver to deploy your artifact into <ivy:publish>
Artifactory.
For example:
<ivy:publish resolver="artifactory-publish" overwrite="true">
<!--
Use overwrite="true" if you wish to overwrite existing artifacts
and publishivy="false" if you only want to publish artifacts not module descriptors
-->
<artifacts/>
</ivy:publish>
Using a Dedicated Settings File for Deployment
If you have defined your deployment settings, including the required credentials in a dedicated settings file, you can refer to it by defining a
unique ID for your settings:
<ivy:settings id="ivy.pub.settings" file="publish_to_artifactory_settings.xml"/>
Then point the publish task at these settings, by adding the following attribute to the element: publish
settingsRef="ivy.pub.settings"
Please consult the for more detailed information. Ivy documentation
Using Artifactory
Overview
This section describes how to use Artifactory and is divided into the following sections:
Browsing Artifactory
Deploying via the Web UI
Searching Artifacts
Manipulating Artifacts
Updating Your Profile
Content-Type Handling
Artifactory REST API
Browsing Artifactory
Overview
Artifactory provides two modes for browsing repositories:
Tree Browsing
Simple Browsing
Both browsing modes enforce the defined security rules to ensure you can only perform permitted actions and see
just the information you are allowed to see in accordance with system security policies.
Tree Browsing
The Tree Browser and the Artifacts tabprovides full information about repository items.
For each selected artifact/folder/repository on the tree, a tabbed panel offers detailed data views. Some of the information provided includes
actions that can be performed on the selected item:
When running Artifactory standalone, the default local URL is . http://localhost:8081/artifactory
If the Artifactory WAR is deployed to another servlet container, this URL may vary according to the
container-specific deployment configuration.
Viewing Maven Metadata and POMs
Artifactory provides ad-hoc views for Maven metadata ( and POM files as dedicated tabs when selecting the maven-metadata.xml pom.xml
relevant tree item.
POM View
Maven Metadata View
Download Statistics
In tree-mode browsing, Artifactory also provides download statistics information for artifacts.
Simple Browser
The simple browser allows you to browse Artifactory using simple path-driven URLs, which are the same URLs used by a build client, such as
Maven. It provides lightweight, view-only browsing.
A unique feature provided by this browsing mode is the ability to browse virtual repositories content in a consolidated way and see where each
physical repository/s every folder and artifact comes from.
List Browsing
List Browsing provides the most lightweight, read-only view and is similar to simple directory listing provided by HTTP servers.
To activate List Browsing, click the small icon to the right of a repository name in the Simple Browser (marked in red in the screenshot above).
Creating public views with List Browsing
One of the advantages of List Browsing is that it is mounted on a well-known path prefix - : list
http://host:port/artifactory/list/repo-path
This allows the system administrator to create a virtual host that only exposes Artifactory's List Browsing feature to public users, while
maintaining all write and advanced privileges, but potentially expensive UI and REST features (such as searches), for internal use.
1.
2.
Remote Browsing
Remote browsing provides the ability to navigate the contents of the remote repository even if the artifacts have not been cached locally.
To view the contents of a remote repository, ensure that the "List Remote Folder Items" checkbox is marked in the remote repository
configuration and then navigate via the the Simple Browser or List Browser to the remote repository.
An item (folder or artifact) that has not been cached yet has a small globe icon to its right in the Simple Browser:.
In the List Browser a non-cached item has an arrow to its right:
WebDAV Browsing
Any local or cache repository may be mounted as a secure WebDAV share and made browsable from any WebDAV-supporting file manager, by
referencing the URL of the target repository.
For example: . http://host:port/artifactory/repo-path
Download artifact
Right click on the selected row in the table and press the Download button
Available only if the JCenter repository configured in Artifactory
Show in Bintray
Right click on the selected row in the table and press the Show in Bintray button
Show in Tree table
Right click on the selected row in the table and press the Show in Tree table button
Available only if the item exists in Artifactory and the JCenter repository configured in Artifactory.
Create JCenter
If JCenter remote repository is currently not configured and is admin the user logged as , Artifactory allows convenient way to create JCenter
repository, in such case the following link will appear, click on the link and then press the create button in the "New remote repository" panel to
create JCenter repository in Artifactory.
1.
2.
Manipulating Artifacts
Overview
Artifactory supports , in contrast to naive removal of repository files and folders. This means that the true undeployment of artifacts maven-met
descriptors inside the repository are immediately updated to reflect the removal of artifacts, ensuring consistent operation with adata.xml
Maven clients.
Artifactory does not only provide simple artifact removal, but also a powerful way to from the repository. clean up complete versions
This section covers these options:
Deleting Single Items
Cleaning-up Complete Versions
Moving Artifacts
Deleting Single Items
Deleting Single Items
To remove an artifact or a folder of an artifact:
To to the Tree Browser under the Artifacts tab and then Browse -> Tree Browser
Select the Delete operation, either from the tabbed-panel or from the right-click drop-down menu
Once deleted, the respective maven-metadata.xml affected by the removal is updated accordingly (unless
removed from a remote cache) and the deleted artifacts are not returned by search results.
1.
2.
3.
4.
Cleaning-up Complete Versions
Overview
It is common for a repository to accumulate many different artifacts deployed under the same group (or just the same path prefix) and the same
version. This is especially true for snapshot deployments of multi-module projects, where all deployed artifacts use the same version.
Cleaning up an old version of different artifacts can be a tedious task and often requires some sort of scripting and
metadata patching. Aware of this problem,Artifactory provides a simple solution for cleaning up old versions.
Performing Versions Cleanup
To perform a version cleanup:
Select a folder in the Tree Browser under the Artifacts tab and then Browse -> Tree Browser
Right-click on the selected item and choose the Remove Versions operation from the right-click menu
Artifactory performs a deep-scan of the folder and returns with a list of all the groups and versions available for deletion
Select the versions you want to clean up
Moving Artifacts
Moving Artifacts
You can move artifacts or folders from the tree browser under the Artifacts tab and then , by using the move action Browse -> Tree Browser
button or by right-clicking the item.
Only admin users can perform version cleanup.
Before moving, you must select the target repository to move to.
You may also perform a 'Dry Run' to ensure the move can be accomplished without any errors or warnings (the target repository may not accept
all moved items due to its policies, the current user's permissions etc.).
Once the move is complete you are guaranteed that all metadata is consistent and that Maven-specific metadata is recalculated to reflect the
move results.
Updating Your Profile
Updating Your Profile
You can edit your profile at any time, provided that you have the right permissions to do so by clicking on you login name on the upper-right hand
corner of the screen.
After entering your password a profile edit panel appears.
Artifactory provides flexible to manage mechanism Content-Type / Mime-Type. On one hand it allows to define system wide Mime-Types and on
Mime-Types . , allows the other hand to overwrite for certain files The default Mime-Types list is in $ARTIFACTORY_HOME/etc/mimetypes.xml
and can be edited in order to add, remove or change Mime-Types. If a file doesnt contain an extension or an extension is not supported by either
of the Mime-Types, Artifactory will use the default one: . Each Mime-Type contains a list of supported application/octet-stream
extensions which are being compared with the artifacts name extension. The first Mime-Type that contain the artifact name extension will be the
chosen as the artifact Mime-Type.
The mimetypes.xml Format Example
For more information about using secured passwords with your profile, . please read this
mimetype.xml example
<mimetypes version="4">
<mimetype type="text/plain" extensions="txt, properties, mf, asc" viewable="true"
syntax="plain"/>
<mimetype type="text/html" extensions="htm, html" viewable="true" syntax="xml"/>
<mimetype type="text/css" extensions="css" viewable="true" syntax="css"/>
<mimetype type="text/xsl" extensions="xsl" viewable="true" syntax="xml"/>
<mimetype type="text/xslt" extensions="xslt" viewable="true" syntax="xml"/>
<mimetype type="text/x-java-source" extensions="java" viewable="true"
syntax="java"/>
<mimetype type="text/x-javafx-source" extensions="fx" viewable="true"
syntax="javafx"/>
</mimetypes>
Some of the Mime-Types such as are required by Artifactory for a proper Caution: "application/x-checksum"
functioning. DO NOT change them unless you really know what you are doing.
Each Mime-Type may have the following attributes:
type - The mime entry unique name (mandatory)
extensions - Comma separated list of file extensions mapped to this mime type (mandatory)
index - True if this mime type should be indexed for archive searching (valid only supported archive files)
archive - True if this mime type is a browsable archive
viewable - True if this mime type can be viewed as text file inside Artifactory UI
syntax - The UI highlighter syntax to for this mime type (only relevant if this is a viewable type)
css - The css class of a display icon for this mime type
According to the above Mime-Types list: : Example
test.properties is "text/plain" (properties is included in the text/plain supported list)
test.css is "text/css" (css is included in the"text/css"default list)
test.doc is "application/octet-stream" (doc is not included ineither of the Mime-types).
Choosing Content-Type during download (Artifactory Pro 3.0.2 or above)
Artifactory allows overriding the Content-Type HTTP header value of downloaded files with the special property artifactory.content-type
, In such case the will receive the property value Content-Type HTTP header value . Artifactory will use the default mechanism which Otherwise
chooses the Content-Type by trying to find a match between the artifact name extension and extensions in the mimetypes.xml file.
Artifactory REST API
WADL
Artifactory exposes its REST API through an auto-generated WADL file (courtesy of the ). Jersey REST framework
This provides a convenient and up-to-date self-descriptive API and can be used by various tools/frameworks to
automate the creation of REST calls.
The WADL file is available at the following URL:
http://server:port/artifactory/api/application.wadl
REST Resources
Set out below is a list of the REST resources exposed by Artifactory.
Usage of REST resources is subject to security restrictions applicable to each individual resource.
TABLE OF CONTENTS
BUILDS
All Builds
Build Runs
Build Info
Builds Diff
Build Promotion
Delete Builds
Build Rename
ARTIFACTS & STORAGE
Folder Info
File Info
Item Last Modified
Item Properties
Set Item Properties
Delete Item Properties
Retrieve Artifact
Retrieve Latest Artifact
Retrieve BuildArtifacts Archive
Trace Artifact Retrieval
Archive Entry Download
Create Directory
Deploy Artifact
Deploy Artifact by Checksum
Deploy Artifacts from Archive
File Compliance Info
Delete Item
Copy Item
Move Item
Scheduled Replication Status
Pull/Push Replication
Artifact Sync Download (Deprecated)
Folder Sync (Deprecated)
File List
SEARCHES
Artifact Search (Quick Search)
Archive Entry Search (Class Search)
GAVC Search
Property Search
Bad Checksum Search
Artifacts Not Downloaded Since
Artifacts Created in Date Range
Pattern Search
Builds for Dependency
License Search
Artifact Version Search
Artifact Latest Version Search
Build Artifacts Search
SECURITY
Get Users
Get User Details
Create or Replace User
Update User
Delete User
Get Groups
Get Group Details
Create or Replace Group
Update Group
Delete Group
Get Permission Targets
Get Permission Target Details
Create or Replace Permission Target
Delete Permission Target
Effective Item Permissions
Security Configuration
Save Security Configuration (Deprecated)
REPOSITORIES
Get Repositories
Repository Configuration
Create or Replace Repository Configuration
Update Repository Configuration
Delete Repository
Remote Repository Configuration
Calculate YUM Repository Metadata
Calculate Maven Index
CalculateMaven Metadata
SYSTEM & CONFIGURATION
System Info
System Health Ping
General Configuration
Save General Configuration
Version and Add-ons information
PLUGINS
Execute Plugin Code
Retrieve All Available Plugin Info
Retrieve Plugin Info Of A Certain Type
Retrieve Build Staging Strategy
Execute Build Promotion
IMPORT & EXPORT
Import Repository Content
Import System Settings Example
Full System Import
Export System Settings Example
Export System
BUILDS
All Builds
Description: Provides information on all builds
: 2.2.0 Since
: Requires a privileged user (can be anonymous) Security
: GET /api/build Usage
: application/vnd.org.jfrog.build.Builds+json Produces
: Sample Output
GET /api/build
{
"uri": "http://localhost:8080/artifactory/api/build"
"builds" : [
{
"uri" : "/wicket",
"lastStarted" : ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ)
},
{
"uri" : "/jackrabbit",
"lastStarted" : ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ)
}
]
}
Build Runs
Description: Build Runs
: 2.2.0 Since
: Requires a privileged user (can be anonymous) Security
: GET /api/build/{buildName} Usage
: application/vnd.org.jfrog.build.BuildsByName+json Produces
: Sample Output
GET /api/build/wicket
{
"uri": "http://localhost:8080/artifactory/api/build/wicket"
"buildsNumbers" : [
{
"uri" : "/51",
"started" : ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ)
},
{
"uri" : "/52",
"started" : ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ)
}
]
}
Build Info
Description: Build Info
: 2.2.0 Since
: Requires a privileged user (can be anonymous) Security
: GET /api/build/{buildName}/{buildNumber} Usage
: application/vnd.org.jfrog.build.BuildInfo+json Produces
: Sample Output
GET /api/build/wicket/51
{
"uri": "http://localhost:8080/artifactory/api/build/wicket/51"
"buildInfo" : {
...
}
}
Builds Diff
Description: Compare a build artifacts/dependencies/environment with an older build to see what has changed (new artifacts added, old
dependencies deleted etc).
: 2.6.6 Since
: Requires a privileged user (can be anonymous) Security
: GET /api/build/{buildName}/{buildNumber}?diff={OlderbuildNumber} Usage
: application/vnd.org.jfrog.build.BuildsDiff+json Produces
: Sample Output
GET /api/build/wicket/51?diff=50
{
"artifacts": {
"updated": [],
"unchanged": [],
"removed": [],
"new": []
}, "dependencies": {
"updated": [],
"unchanged": [],
"removed": [],
"new": []
}, "properties": {
"updated": [],
"unchanged": [],
"removed": [],
"new": []
}
}
Build Promotion
Description: Change the status of a build, optionally moving or copying the build's artifacts and its dependencies to a target repository and
setting properties on promoted artifacts.
All artifacts from all scopes are included by default while dependencies are not. Scopes are additive (or).
: 2.3.3 Since
: Requires Artifactory Pro Notes
: Requires a privileged user (can be anonymous) Security
: POST /api/build/promote/{buildName}/{buildNumber} Usage
: application/vnd.org.jfrog.artifactory.build.PromotionRequest+json Consumes
POST /api/build/promote/wicket/51
{
"status": "staged" // new build status (any string)
"comment" : "Tested on all target platforms." // An optional comment describing the
reason for promotion. Default: ""
"ciUser": "builder" // The user that invoked promotion from the CI server
"timestamp" : ISO8601 // the time the promotion command was received by Artifactory
"dryRun" : false // run without executing any operation in Artifactory, but get the
results to check if the operation can succeed. Default: false
"targetRepo" : "libs-release-local" // optional repository to move or copy the
build's artifacts and/or dependencies
"copy": false // whether to copy instead of move, when a target repository is
specified. Default: false
"artifacts" : true // whether to move/copy the build's artifacts. Default: true
"dependencies" : true // whether to move/copy the build's dependencies. Default:
false.
"scopes" : [ "compile", "runtime" ] // an array of dependency scopes to include when
"dependencies" is true
"properties": { // a list of properties to attach to the build's artifacts
(regardless if "targetRepo" is used).
"components": ["c1","c3","c14"],
"release-name": ["fb3-ga"]
}
"failFast": true // fail and abort the operation upon receiving an error. Default:
true
}
Produces: application/vnd.org.jfrog.artifactory.build.PromotionResult+json
: Sample Output
{
"messages" : [
{
"level": "error",
"message": "The repository has denied...."
},...
]
}
Delete Builds
Description: Removes builds stored in Artifactory. Useful for cleaning up old build info data.
If the parameter is evaluated as 1 (0/false by default), build artifacts are also removed. artifacts
If the parameter is evaluated as 1 (0/false by default), the whole build is removed. deleteAll
: 2.3.0; artifact removal since 2.3.3; Since
: Requires Artifactory Pro Notes
: Requires an admin user Security
: DELETE /api/build/{buildName}[?buildNumbers=n1[,n2]][&artifacts=0/1][&deleteAll=0/1] Usage
: application/text Produces
: Sample Usage
DELETE /api/build/wicket?buildNumbers=51,52,55&artifacts=1
The following builds has been deleted successfully: 'wicket#51', 'wicket#52',
'wicket#55'.
DELETE /api/build/wicket
All 'wicket' builds have been deleted successfully.
Build Rename
Description: Renames a build stored in Artifactory. Typically used to keep the build info in sync with a renamed build on the CI server.
: 2.2.5 Since
: Requires Artifactory Pro Notes
: Requires a valid user with deploy permissions Security
: POST /api/build/rename/{buildName}?to=newBuildName Usage
: application/text Produces
: Sample Usage
POST /api/build/rename/myJobName?to=myNewJobName
Build renaming of 'myJobName' to 'myNewJobName' was successfully started.
ARTIFACTS & STORAGE
Folder Info
Description: Folder Info
For virtual use, the virtual repository returns the unified children
: 2.2.0 Since
: Requires a privileged user (can be anonymous) Security
: GET /api/storage/{repoKey}/{folder-path} Usage
: application/vnd.org.jfrog.artifactory.storage.FolderInfo+json Produces
: Sample Output
GET /api/storage/libs-release-local/org/acme
{
"uri": "http://localhost:8080/artifactory/api/storage/libs-release-local/org/acme",
"repo": "libs-release-local",
"path": "/org/acme",
"created": ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ),
"createdBy": "userY",
"lastModified": ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ),
"modifiedBy": "userX",
"lastUpdated": ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ),
"children": [
{
"uri" : "/child1",
"folder" : "true"
},{
"uri" : "/child2",
"folder" : "false"
}
]
}
File Info
Description: File Info
For virtual use the virtual repository returns the resolved file. Supported by local, local-cached and virtual repositories.
: 2.2.0 Since
: Requires a privileged user (can be anonymous) Security
: GET /api/storage/{repoKey}/{filePath} Usage
: application/vnd.org.jfrog.artifactory.storage.FileInfo+json Produces
: Sample Output
GET /api/storage/libs-release-local/org/acme/lib/ver/lib-ver.pom
{
"uri":
"http://localhost:8080/artifactory/api/storage/libs-release-local/org/acme/lib/ver/lib
-ver.pom",
"downloadUri":
"http://localhost:8080/artifactory/libs-release-local/org/acme/lib/ver/lib-ver.pom",
"repo": "libs-release-local",
"path": "/org/acme/lib/ver/lib-ver.pom",
"remoteUrl": "http://some-remote-repo/mvn/org/acme/lib/ver/lib-ver.pom",
"created": ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ),
"createdBy": "userY",
"lastModified": ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ),
"modifiedBy": "userX",
"lastUpdated": ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ),
"size": "1024", //bytes
"mimeType": "application/pom+xml",
"checksums":
{
"md5" : string,
"sha1" : string
},
"originalChecksums":{
"md5" : string,
"sha1" : string
}
}
Item Last Modified
Description: Retrieve the last modified item at the given path. If the given path is a folder, the latest last modified item is searched for
recursively. Supported by local and local-cached repositories.
: 2.2.5 Since
: Requires Artifactory Pro Notes
: Requires a valid user with deploy permissions Security
: GET /api/storage/{repoKey}/{item-path}?lastModified Usage
: application/vnd.org.jfrog.artifactory.storage.ItemLastModified+json Produces
: Sample Output
GET /api/storage/libs-release-local/org/acme?lastModified
{
"uri":
"http://localhost:8080/artifactory/api/storage/libs-release-local/org/acme/foo/1.0-SNA
PSHOT/foo-1.0-SNAPSHOT.pom",
"lastModified": ISO8601
}
Item Properties
Description: Item Properties. Optionally return only the properties requested. Supported by local and local-cached repositories.
: 2.2.1 Since
: Requires a privileged user (can be anonymous) Security
: GET /api/storage/{repoKey}/{itemPath}?properties[=x[,y]] Usage
: application/vnd.org.jfrog.artifactory.storage.ItemProperties+json Produces
: Sample Output
GET /api/storage/libs-release-local/org/acme?properties\[=x[,y]\]
{
"uri": "http://localhost:8080/artifactory/api/storage/libs-release-local/org/acme"
"properties":{
"p1": ["v1","v2","v3"],
"p2": ["v4","v5","v6"]
}
}
Set Item Properties
Description: Attach properties to an item (file or folder). When a folder is used property attachment is recursive by default.
: Requires Artifactory Pro Notes
: 2.3.0 Since
: Requires a privileged user (can be anonymous) Security
: PUT /api/storage/{repoKey}{itemPath}?properties=p1=v1[,v2][|p2=v3][&recursive=1] Usage
: Sample Usage
PUT
/api/storage/libs-release-local/ch/qos/logback/logback-classic/0.9.9?properties=os=win
,linux|qa=done&recursive=1
Delete Item Properties
Description: Deletes the specified properties from an item (file or folder). When a folder is used property removal is recursive by default.
: Requires Artifactory Pro Notes
: 2.3.2 Since
: Requires a privileged user (can be anonymous) Security
: DELETE /api/storage/{repoKey}{itemPath}?properties=p1[,p2][&recursive=1] Usage
: Sample Usage
DELETE
/api/storage/libs-release-local/ch/qos/logback/logback-classic/0.9.9?properties=os,qa&
recursive=1
Retrieve Artifact
Description: Retrieves an artifact from the specified destination.
You can also use as part of retrieving artifacts. Property-based Resolution
: Requires a user with 'read' permission (can be anonymous) Security
: GET /repo-key/path/to/artifact.ext Usage
: Sample Usage
GET
http://localhost:8080/artifactory/libs-release-local/ch/qos/logback/logback-classic/0.
9.9/logback-classic-0.9.9.jar
Retrieve Latest Artifact
Description: Retrieves the latest artifact version from the specified destination.
: Specify or for the version in the requested path to get the latest Maven integration or Latest Maven Release/Integration SNAPSHOT [RELEASE]
release artifact.
: S Latest Non-Maven Release/Integration pecify or for the versionin the requested path (replacing the [INTEGRATION] [RELEASE] [folderI
and as defined by the repository's ) tegRev] [fileItegRev] layout to get the latest integration version or latest release version artifact
accordingly.
Integration and release tokens cannot be mixed together. Only local, cache and virtual repositories will be used.
You can also use as part of retrieving artifacts. property-based resolution
: Requires Artifactory Pro. Notes
: Latest Maven: 2.6.0; Latest non-Maven: 2.6.2 Since
: Requires a user with 'read' permission (can be anonymous) Security
: GET /repo-key/path/to/artifact.ext Usage
: Sample Usage
Download the latest Maven unique snapshot artifact:
GET
http://localhost:8080/artifactory/libs-release-local/ch/qos/logback/logback-classic/0.
9.9-SNAPSHOT/logback-classic-0.9.9-SNAPSHOT.jar
Download the latest release artifact:
GET http://localhost:8080/artifactory/ivy-local/org/acme/[RELEASE]/acme-[RELEASE].jar
Download the latest integration artifact:
GET
http://localhost:8080/artifactory/ivy-local/org/acme/1.0-[INTEGRATION]/acme-1.0-[INTEG
RATION].jar
Retrieve BuildArtifacts Archive
Description: Retrieves an archive file (supports zip/tar/ ) containing all the artifacts related to a specific build, you can optionally provide tar.gz/tgz
mappings to filter the results, the mappings support whichenables you to dynamically construct the target path inside regexp capturing groups
the result archive file.
: Requires Artifactory Pro Notes
: 2.6.5 Since
: Requires a privileged user (can be anonymous) Security
: POST /api/archive/buildArtifacts Usage
:application/vnd.org.jfrog.artifactory.build.BuildArtifactsRequest+json Consumes
application/zip (for zip archive type), application/x-tar (for tar archive type), application/x-gzip (for archive type) Produces: tar.gz/tgz
: Sample Usage
POST /api/archive/buildArtifacts
{
+"buildName": "build-name" // The build name for search by
+"buildNumber": "15" // The build number to search by, can be LATEST to search for
the latest build number
-"buildStatus": "Released" // Optionally search by latest build status (e.g:
"Released")
-"repos": ["libs-release-local,ext-release-local"] // Optionally refine search for
specific repos, omit to search within all repositories
+"archiveType": "tar/zip/tar.gz/tgz" // The archive file type to return
-"mappings": [ // Optionally refine the search by providing a list of regexp patterns
to search by
{
"input": "(.+)/(.+)-sources.jar",
"output": "$1/sources/$2.jar" // Optionally provide different path of the found
artifacts inside the result archive, supports regexp groups tokens
},
{
"input": "(.+)-release.zip"
}
]
}
Trace Artifact Retrieval
Description: Simulates an artifact retrieval requestfrom the specified location and returns verbose output about the resolution process.
This API is useful for debugging artifact retrieval issues.
: As applied to standard artifact retrieval by the requesting user. Security
: 2.6.0 Since
: GET /repo-key/path/to/artifact.ext?trace Usage
: text/plain Produces
: Sample Output
GET
http://localhost:8080/artifactory/libs-release-local/jmock/jmock/1.0.1/jmock-1.0.1.jar
?trace
1.0-201203131455-2
Build Artifacts Search
Description: Find all the artifacts related to a specific build.
: Requires Artifactory Pro Notes
: 2.6.5 Since
: Requires a privileged user (can be anonymous) Security
: POST /api/search/buildArtifacts Usage
:application/vnd.org.jfrog.artifactory.search.BuildArtifactsRequest+json Consumes
: Sample Usage
POST /api/search/buildArtifacts
{
+"buildName": "build-name" // The build name for search by
+"buildNumber": "15" // The build number to search by, can be LATEST to search for
the latest build number
-"buildStatus": "Released" // Optionally search by latest build status (e.g:
"Released")
-"repos": ["libs-release-local,ext-release-local"] // Optionally refine search for
specific repos, omit to search within all repositories
-"mappings" [ // Optionally refine the search by providing a list of regexp patterns
to search by
{
"input": "(.+)-sources.jar"
},
{
"input": "(.+)-javadoc.jar"
}
]
}
: Produces application/vnd.org.jfrog.artifactory.search.BuildArtifactsSearchResult+json
: Sample Output
POST /api/search/buildArtifacts
{
"results" : [
{
"downloadUri":
"http://localhost:8080/artifactory/libs-release-local/org/acme/lib/ver/lib-sources.jar
"
},{
"downloadUri":
"http://localhost:8080/artifactory/ext-release-local/org/acme/lib/ver/lib-ver-javadoc.
jar"
}
]
}
SECURITY
Get Users
Description: Get the users list
: 2.4.0 Since
: Requires Artifactory Pro Notes
: Requires an admin user Security
: GET /api/security/users Usage
: application/vnd.org.jfrog.artifactory.security.Users+json Produces
: Sample Output
GET /api/security/users
[
{
"name": "davids"
"uri" : "http://localhost:8080/artifactory/api/security/users/davids"
}, {
"name": "danl"
"uri" : "http://localhost:8080/artifactory/api/security/users/danl"
}
]
Get User Details
Description: Get the details of an Artifactory user
: 2.4.0 Since
: Requires Artifactory Pro Notes
: Requires an admin user Security
: GET /api/security/users/{userName} Usage
: Produces application/vnd.org.jfrog.artifactory.security.User+json
: Sample Output
GET /api/security/users/davids
{
user.json
}
Create or Replace User
Description: Creates a new user in Artifactory or replaces an existing user
: 2.4.0 Since
: Requires Artifactory Pro Notes
Missing values will be set to the default values as defined by the consumed type.
: Requires an admin user Security
: PUT /api/security/users/{userName} Usage
: Consumes application/vnd.org.jfrog.artifactory.security.User+json
: Sample Usage
PUT /api/security/users/davids
{
user.json
}
Update User
Description: Updates an exiting user in Artifactory with the provided user details.
: 2.4.0 Since
: Requires Artifactory Pro Notes
: Requires an admin user Security
: POST /api/security/users/{userName} Usage
: Consumes application/vnd.org.jfrog.artifactory.security.User+json
: Sample Usage
POST /api/security/users/davids
{
user.json
}
Delete User
Description: Removes an Artifactory user.
: 2.4.0 Since
: Requires Artifactory Pro Notes
: Requires an admin user Security
: DELETE /api/security/users/{userName} Usage
: application/text Produces
: Sample Usage
DELETE /api/security/users/davids
User 'davids' has been removed successfully.
Get Groups
Description: Get the groups list
: 2.4.0 Since
: Requires Artifactory Pro Notes
: Requires an admin user Security
: GET /api/security/groups Usage
: Produces application/vnd.org.jfrog.artifactory.security.Groups+json
: Sample Output
GET /api/security/groups
[
{
"name": "readers"
"uri" : "http://localhost:8080/artifactory/api/security/groups/readers"
}, {
"name": "tech-leads"
"uri" : "http://localhost:8080/artifactory/api/security/groups/tech-leads"
}
]
Get Group Details
Description: Get the details of an Artifactory Group
: 2.4.0 Since
: Requires Artifactory Pro Notes
: Requires an admin user Security
: GET /api/security/groups/{groupName} Usage
: Produces application/vnd.org.jfrog.artifactory.security.Group+json
: Sample Output
GET /api/security/groups/dev-leads
{
group.json
}
Create or Replace Group
Description: Creates a new group in Artifactory or replaces an existing group
: 2.4.0 Since
: Requires Artifactory Pro Notes
Missing values will be set to the default values as defined by the consumed type.
: Requires an admin user Security
: PUT /api/security/groups/{groupName} Usage
: Consumes application/vnd.org.jfrog.artifactory.security.Group+json
: Sample Usage
PUT /api/security/groups/dev-leads
{
group.json
}
Update Group
Description: Updates an exiting group in Artifactory with the provided group details.
: 2.4.0 Since
: Requires Artifactory Pro Notes
: Requires an admin user Security
: POST /api/security/groups/{groupName} Usage
: Consumes application/vnd.org.jfrog.artifactory.security.Group+json
: Sample Usage
POST /api/security/groups/dev-leads
{
group.json
}
Delete Group
Description: Removes an Artifactory group.
: 2.4.0 Since
: Requires Artifactory Pro Notes
: Requires an admin user Security
: DELETE /api/security/groups/{groupName} Usage
: application/text Produces
: Sample Usage
DELETE /api/security/groups/dev-leads
Group 'dev-leads' has been removed successfully.
Get Permission Targets
Description: Get the permission targets list
: 2.4.0 Since
: Requires Artifactory Pro Notes
: Requires an admin user Security
: GET /api/security/permissions Usage
: Produces application/vnd.org.jfrog.artifactory.security.PermissionTargets+json
: Sample Output
GET /api/security/permissions
[
{
"name": "readSourceArtifacts"
"uri" :
"http://localhost:8080/artifactory/api/security/permissions/readSourceArtifacts"
}, {
"name": "populateCaches"
"uri" :
"http://localhost:8080/artifactory/api/security/permissions/populateCaches"
}
]
Get Permission Target Details
Description: Get the details of an Artifactory Permission Target
: 2.4.0 Since
: Requires Artifactory Pro Notes
: Requires an admin user Security
: GET /api/security/permissions/{permissionTargetName} Usage
: Produces application/vnd.org.jfrog.artifactory.security.PermissionTarget+json
: Sample Output
GET /api/security/permissions/populateCaches
{
permission-target.json
}
Create or Replace Permission Target
Description: Creates a new permission target in Artifactory or replaces an existing permission target
: 2.4.0 Since
: Requires Artifactory Pro Notes
Missing values will be set to the default values as defined by the consumed type.
: Requires an admin user Security
: PUT /api/security/permissions/{permissionTargetName} Usage
: Consumes application/vnd.org.jfrog.artifactory.security.PermissionTarget+json
: Sample Usage
PUT /api/security/permissions/populateCaches
{
permission-target.json
}
Delete Permission Target
Description: Deletes an Artifactory permission target.
: 2.4.0 Since
: Requires Artifactory Pro Notes
: Requires an admin user Security
: DELETE /api/security/permissions/{permissionTargetName} Usage
: application/text Produces
: Sample usage
DELETE /api/security/permissions/populateCaches
Permission Target 'remoteCachePopulation' has been removed successfully.
Effective Item Permissions
Description: Returns a list of effective permissions for the specified item (file or folder).
Only users and groups with some permissions on the item are returned. Supported by local and local-cached repositories.
Permissions are returned according to the following conventions:
m=admin; d=delete; w=deploy; n=annotate; r=read
: Requires Artifactory Pro Notes
: 2.3.4 Since
: Requires a valid admin or local admin user. Security
: GET /api/storage/{repoKey}/{itemPath}?permissions Usage
: application/vnd.org.jfrog.artifactory.storage.ItemPermissions+json Produces
: Sample Output
GET /api/storage/libs-release-local/org/acme?permissions
{
"uri": "http://localhost:8080/artifactory/api/storage/libs-release-local/org/acme"
"principals": {
"users" : {
"bob": ["r","w","m"],
"alice" : ["d","w","n", "r"]
},
"groups" : {
"dev-leads" : ["m","r","n"],
"readers" : ["r"]
}
}
}
Security Configuration
Description: Retrieve the security configuration (security.xml).
: 2.2.0 Since
: This is an advanced feature - make sure the new configuration is really what you wanted before saving. Notes
: Requires a valid admin user Security
: GET /api/system/security Usage
: application/xml Produces
: Sample Output
GET /api/system/security
<security.xml/>
Save Security Configuration (Deprecated)
Description: Save the security configuration (security.xml).
: 2.2.0 Since
: This API is . Notes deprecated
: Requires a valid admin user Security
: POST /api/system/security Usage
: application/xml Consumes
: Sample Usage
POST /api/system/security
<security.xml/>
REPOSITORIES
Get Repositories
Description: Returns a list of minimal repository details for all repositories of the specified type.
: 2.2.0 Since
: Requires a privileged user (can be anonymous) Security
: GET /api/repositories[?type=repositoryType (local|remote|virtual)] Usage
: application/vnd.org.jfrog.artifactory.repositories.RepositoryDetailsList+json Produces
: Sample Output
GET /api/repositories
[
{
"key" : "libs-releases-local",
"type" : "LOCAL",
"description" : "Local repository for in-house libraries",
"url" : "http://localhost:8080/artifactory/libs-releases-local"
}, {
"key" : "libs-snapshots-local",
"type" : "LOCAL",
"description" : "Local repository for in-house snapshots",
"url" : "http://localhost:8080/artifactory/libs-snapshots-local"
}
]
Repository Configuration
Description: Retrieves the current configuration of a repository.
: 2.3.0 Since
: Requires Artifactory Pro Notes
: Requires a valid user for a shared remote repository and admin user for anything else. Shared remote repository data is sanitized for Security
security when a non-admin user is used.
: GET /api/repositories/{repoKey} Usage
: Produces application/vnd.org.jfrog.artifactory.repositories.LocalRepositoryConfiguration+json,
application/vnd.org.jfrog.artifactory.repositories.RemoteRepositoryConfiguration+json,
application/vnd.org.jfrog.artifactory.repositories.VirtualRepositoryConfiguration+json
: Sample Output
GET /api/repositories/libs-release-local
{
repository-config.json
}
Create or Replace Repository Configuration
Description: Creates a new repository in Artifactory with the provided configuration or replaces the configuration of an existing repository.
A position may be specified using the parameter. If the map size is shorter than the repository is the last one (the default behavior). pos pos
: 2.3.0 Since
: Requires Artifactory Pro Notes
An existing repository with the same key are removed from the configuration and its content is removed!
Missing values are set to the default values as defined by the consumed type spec.
: Requires an admin user Security
: PUT /api/repositories/{repoKey}[?pos=position] Usage
: Consumes application/vnd.org.jfrog.artifactory.repositories.LocalRepositoryConfiguration+json,
application/vnd.org.jfrog.artifactory.repositories.RemoteRepositoryConfiguration+json,
application/vnd.org.jfrog.artifactory.repositories.VirtualRepositoryConfiguration+json, application/json
: Sample Usage
PUT /api/repositories/libs-release-local?pos=2
{
repository-config.json
}
Update Repository Configuration
Description: Updates an exiting repository configuration in Artifactory with the provided configuration elements.
: 2.3.0 Since
: Requires Artifactory Pro Notes
The class of a repository (the attribute cannot be updated. rclass
: Requires an admin user Security
: POST /api/repositories/{repoKey} Usage
: Consumes application/vnd.org.jfrog.artifactory.repositories.LocalRepositoryConfiguration+json,
application/vnd.org.jfrog.artifactory.repositories.RemoteRepositoryConfiguration+json,
application/vnd.org.jfrog.artifactory.repositories.VirtualRepositoryConfiguration+json, application/json
: Sample Usage
POST /api/repositories/libs-release-local
{
repository-config.json
}
Delete Repository
Description: Removes a repository configuration together with the whole repository content.
: 2.3.0 Since
: Requires Artifactory Pro Notes
: Requires an admin user Security
: DELETE /api/repositories/{repoKey} Usage
: application/text Produces
: Sample Usage
DELETE /api/repositories/libs-release-local
Repository 'libs-release-local' and all its content have been removed successfully.
Remote Repository Configuration
Description: Repository Configuration (Deprecated)
Gets the shared configuration of a remote repository.
: 2.2.0 Since
: This API is . Use the Get Repository Configuration API instead. Notes deprecated
: Requires a valid user for a shared remote repository and admin user for anything else. Shared remote repository data will be sanitized Security
for security when non-admin user is used.
: GET /api/repositories/{remoteRepoName}/configuration Usage
: application/vnd.org.jfrog.artifactory.repositories.SharedRemoteRepositoryConfiguration+json Produces
: Sample Output
GET /api/repositories/remote-repo/configuration
{
repository-config.json
}
Calculate YUM Repository Metadata
Description: Calculates/recalculates the YUM metdata for this repository, based on the RPM package currently hosted in the repository.
Calculation can be synchronous (the default) or asynchronous.
Please see the documentation for more details. YUM integration
: Requires Artifactory Pro. Immediate calculation requests cannot be called on repositories with automatic asynchronous calculations Notes
enabled.
: Requires a valid admin user Security
: POST /api/yum/{repoKey}[?async=0/1] Usage
: application/text Produces
: 2.3.5 Since
: Sample Output
POST /api/yum/libs-release-local?async=1
YUM metadata calculation for repository 'libs-release-local' accepted.
Calculate Maven Index
Description: Calculates/caches a Maven index for the specified repositories.
For a virtual repository specify all underlying repositories that you want the aggregated index to include.
Calculation can be forced, which for remote repositories will cause downloading of a remote index even if a locally cached index has not yet
expired; and index recalculation based on the cache on any failure to download the remote index, including communication errors (the default
behavior is to only use the cache when a remote index cannot be found and returns a 404). Forcing has no effect on local repositories index
calculation.
Please see the documentation for more details. Exposing Maven Indexes
: Requires Artifactory Pro. Notes
: Requires a valid admin user Security
: POST /api/maven[?repos=x[,y]][&force=0/1] Usage
: application/text Produces
: 2.5.0 Since
: Sample Output
POST /api/maven?repos=libs-release-local,ext-release-local&force=1
Maven index refresh for repositories '[libs-release-local, ext-release-local]' has
been accepted.
CalculateMaven Metadata
Description: Calculates Maven metadata on the specified path (local repositories only).
:Requires a valid user withdeploypermissions Security
: POST/api/maven/calculateMetadata/{repoKey}/{folder-path} Usage
: application/text Produces
: 3.0.2 Since
: Sample Output
POST /api/maven/calculateMetadata/libs-release-local/org/acme
OK
SYSTEM & CONFIGURATION
System Info
Description: System Info
Get general system information.
: 2.2.0 Since
: Requires a valid admin user Security
: GET /api/system Usage
: text/plain Produces
: Sample Output
GET /api/system
system info output text
System Health Ping
Description: Get a simple status response about the state of Artifactory
Returns 200 code with an 'OK' text if Artifactory is working properly, if not will return an HTTP error code with a reason.
: 2.3.0 Since
: Requires a valid user (can be anonymous) Security
: GET /api/system/ping Usage
: text/plain Produces
: Sample Output
GET /api/system/ping
OK
General Configuration
Description: Get the general configuration (artifactory.config.xml).
: 2.2.0 Since
: Requires a valid admin user Security
: GET /api/system/configuration Usage
: application/xml ( ) Produces http://www.jfrog.org/xsd/artifactory-v1_4_5.xsd
: Sample Output
GET /api/system/configuration
<artifactory.config.xml/>
Save General Configuration
Description: Save the general configuration (artifactory.config.xml).
: 2.2.0 Since
: This is an advanced feature - make sure the new configuration is really what you wanted before saving. Notes
: Requires a valid admin user Security
: POST /api/system/configuration Usage
: application/xml ( ) Consumes http://www.jfrog.org/xsd/artifactory-v1_4_5.xsd
: Sample Usage
POST /api/system/configuration
<artifactory.config.xml/>
Version and Add-ons information
Description: Retrieve information about the current Artifactory version, revision, and currently installed Add-ons
: 2.2.2 Since
: Requires a valid user (can be anonymous) Security
: GET /api/system/version Usage
: Produces application/vnd.org.jfrog.artifactory.system.Version+json
: Sample Output
GET /api/system/version
{
"version" : "2.2.2",
"revision" : "10427",
"addons" : [ "build", "ldap", "properties", "rest", "search", "sso", "watch",
"webstart" ]
}
PLUGINS
Execute Plugin Code
Description: Executes a named execution closure found in the section of a . executions user plugin
Execution can take parameters and be synchronous (the default) or asynchronous.
: 2.3.1 Since
: Requires Artifactory Pro Notes
: Requires anauthenticated user (the plugin can control which users/groups are allowed to trigger it) Security
: POST /api/plugins/execute/{executionName}?[params=p1=v1[,v2][|p2=v3][&async=1]] Usage
: text/plain Produces
: Sample Output
POST /api/plugins/execute/cleanup?params=suffix=SNAPSHOT|types=jar,war,zip&async=1
OK
Retrieve All Available Plugin Info
Description: Retrieves all available information (subject to the permissions of the provided credentials). user plugin
: 2.5.2 Since
: Requires Artifactory Pro Notes
: Requires an authenticated user. Security
: GET /api/plugins Usage
:application/json Produces
: Sample Output
GET /api/plugins
{
"executions": [
{
"name": "execution1",
"version": "version",
"description": "description",
"users": ["user1"],
"groups": ["group1", "group2"],
"params": {}
}
],
"staging": [
{
"name": "strategy1",
"version": "1.0",
"description": "desc",
"params": {"key1": "val1"}
}
]
}
The TeamCity Artifactory plugin brings CI Build Integration to TeamCity users. This allows you to capture information about deployed artifacts,
resolved dependencies and environment data associated with TeamCity build runs. There is also full traceability for your builds.
Build Integration also takes care of deploying your artifacts to Artifactory efficiently.
You can read more about the concept of Build Integration, BuildInfo and how it is used in Artifactory . here
Installing the Plugin
Requirements
Some features of the plugin only run on the recent versions of Artifactory and TeamCity.
To make the most of the plugin, the recommended requirements are:
Artifactory 2.2.5 or later.
JetBrains TeamCity 5.1.3 or later.
Installation
Download the version of the plugin according to the compatibility matrix below:
For TeamCity 7.1.xteamcity-artifactory-plugin-2.1.5.zip.
Before you begin
Please make sure you read the general information about before reading the TeamCity-specific Artifactory's Build Integration
documentation.
Release Management with the TeamCity Artifactory Plugin
Version 2.1.0 of the plugin introduces powerful capabilities. Release Management and Promotion
Support for multiple Build Runner types
The TeamCity Artifactory plugin supports almost all build runner types, including: , (with Ivy modules support), Maven2/3 Ivy/Ant Gradl
, , , and . e NAnt MSBuild FxCop Ipr
For TeamCity 7.1.xteamcity-artifactory-plugin-2.1.4.zip.
For TeamCity 7.0.xteamcity-artifactory-plugin-2.1.3.zip.
For TeamCity 6.5.x . teamcity-artifactory-plugin-2.1.2.zip
For TeamCity 6.x . teamcity-artifactory-plugin-2.0.1.zip
For TeamCity 5.x . teamcity-artifactory-plugin-1.1.3.zip
Plugins are deployed to TeamCity by placing the packaged plugin into the folder and $TEAMCITY_USER_HOME/.BuildServer/plugins
restarting TeamCity.
NOTE! thatif you have an older version of the plugin, make sure to remove it.
Compatibility Matrix
Artifactory plugin version TeamCity version Artifactory version
1.0 5.1 2.2.4
1.0.1 5.1.1 2.2.5+
1.1.1 - 1.1.2 5.1.3 2.3.0+
1.1.3 5.1.5 2.3.0+
2.0.0 6.0+ 2.3.0+
2.0.1 6.0+ 2.3.0+
2.1.0 6.5+ 2.3.4+
2.1.1 6.5+ 2.3.4+
2.1.2 6.5.5+ 2.3.4+
2.1.3 6.5.5+ 2.6.0
2.1.4 7.1+ 2.6.0+
2.1.5 7.1+ 2.6.6+
Configuration
To use the TeamCity Artifactory plugin you must first configure your Artifactory server(s) in TeamCity's server configuration. You can then set up
a project build runner to deploy artifacts and Build Info to a repository on one of the configured Artifactory servers.
Configuring System-wide Artifactory Server(s)
To make Artifactory servers globally available to project-runner configurations, they must be defined in Administration->Integrations->A
. rtifactory
Click on " " and fill in the URL of the Artifactory server. Create new Artifactory server configuration
Deployer credentials can be set at the global level for all builds. Deploy credentials can be set or overridden at a project build level.
Resolving repository username and password is optional and only used when querying Artifactory's REST API for a list of configured repositories
(credentials are only required if the target instance does not allow anonymous access).
Configuring Project-specific Runners
Editing Project-specific Configuration
To set up a project runner to deploy build info and artifacts to Artifactory go to Administration->$PROJECT_NAME->$BUILD_NAME->Edit-
. >Runner (Step 3)->Deploy artifacts to Artifactory
When selecting an Artifactory server URL, the server is queried for a list of configured repositories (using the credentials in the server
configuration, if configured). This populates the "Target Repository" combobox with a list of target repositories to deploy to.
If the repository list remains empty, ensure the specified Artifactory server URL, credentials and proxy information (if provided) are valid.
Any information about communication errors that might occur can be found in the TeamCity server logs.
The option is only available when using a 'Maven2' Build Runner. 'Deploy Maven Artifacts'
Running License Checks
Use the Artifactory Pro feature to discover and handle third party dependency licensing issues as part of the build. License Control
Check the 'Run License Checks'checkbox if you want Artifactory to scan and check the licenses of all
dependencies used by this build.
If you want to inform selected users about any license violations detected while scanning, enter a list of email
addresses in the notification recipients text box.
Advanced Options
In addition, you have more advanced options:
The area allows you to specify which artifact files produced by the build are published to Artifactory. At the end of 'Published Artifacts'
the build the plugin locates artifacts in the build's checkout directory according to the specified artifact patterns and publishes them to
Artifactory to one or more locations, optionally applying mapping for the target path of each deployed artifact. The pattern and mapping
syntax for Published Artifacts is similar to the one used by TeamCity for . Build Artifacts
The area lets you specify dependency patterns for published artifacts that should be downloaded from 'Downloaded Artifacts'
Artifactory before the build is run. You can have detailed control over which artifacts are resolved and downloaded by using query-based
resolution, adding to your artifact paths a query with the properties that the artifact should have before it can be downloaded. For further
information read here about . Resolution by Properties
Attaching Searchable Parameters to Build-Info and to Published Artifacts
Under Administration->$PROJECT_NAME->$BUILD_NAME->Edit->Runner (Step 6)->Properties and Environment
, it is possible to define parameters to be attached to the build-info and produced artifacts. Variables
To define a parameter click on the "Add new property" or "Add new variable" buttons (both system properties and environment variables are
supported).
Available parameter types:
buildInfo.property.* - All properties starting with this prefix are added to the root properties of the build-info
artifactory.deploy.* - All properties starting with this prefix are attached to any deployed produced artifacts
It is also possible to point the plugin to a properties file containing the aforementioned properties.
To point to such a file, define a property by the name and set its value to the absolute path of the buildInfoConfig.propertiesFile
properties file.
As of version 2.1.4, the above configuration is not backward compatible and you may need to re-save the builds configuration for them
to run properly.
The given path and file should be present on the machine running the build agent - . not the server!
Viewing Project-specific Configuration
Existing project configuration can be viewed from : Projects->$PROJECT_NAME->$BUILD_NAME->Settings->Runner settings
1.
2.
3.
Running a Build with the Artifactory Plugin
Once you have completed setting up a project runner you can run a project build. The Artifactory plugin takes effect at the end of the build and:
For all build runner types - Publishes the specified Published Artifacts to the selected target repository and applies proper path
mappings.
For Maven or Ivy/Ant build runner - Deploys all artifacts to the selected target repository in one go (as opposed to the deploy at the end
of each module build, used by Maven and Ivy).
Deploys the Artifactory BuildInfo to Artifactory, providing , with links back to the build in TeamCity. full traceability of the build in Artifactory
3.
You can also link directly to the information in Artifactory from a build run view:
Triggering Builds in Reaction to Changes in Artifactory
The plugin allows you to set a new type of trigger that periodically polls a path in Artifactory, a folder or an individual file. Whenever a change is
detected to this path, for example new artifacts have been deployed, the TeamCity build is triggered.
This feature can only be used with the Artifactory Pro Power Pack.
To configure a new build trigger, first select the Artifactory Build Trigger from Administration->$PROJECT_NAME->$BUILD_NAME->Edit->
: Build Triggering
Select the server, repository and paths in the repository for which you would like to automatically trigger a build following a change in the item
content.
Complete the username and a password fields of a valid deployer.
NOTE! that the user must have deploy rights on any local repository).
Proxy Configuration
Currently, TeamCity does not provide a global point of proxy configuration; so where the target Artifactory server must be accessed via a proxy,
proxy configuration can be achieved by setting the following properties inside the $TEAMCITY_USER_HOME/.BuildServer/config/intern
file. al.properties
Narrow down the scope for scanning
When scanning a remote folder for changes, Artifactory has to traverse the folder content and decide if any content has changed. For
deep folders this traversal can become quite expensive.
Therefore, it is recommended to keep the scanning scope to a minimum.
1.
2.
1.
2.
1.
2.
3.
4.
1.
1.
2.
3.
1.
2.
1.
2.
3.
4.
1.
2.
3.
4.
org.jfrog.artifactory.proxy.host
org.jfrog.artifactory.proxy.port
org.jfrog.artifactory.proxy.username
org.jfrog.artifactory.proxy.password
License
The TeamCity Artifactory plugin is available under the Apache v2 License.
Watch the Screencast
To see the Teamcity plugin in action you can watch the short demo screencast below.
Changelog
General
The Artifactory plugin includes release management capabilities for Maven and Gradle jobs using Subversion, Git or Perforce for VCS.
The plugin allows you to manually stage a release build, allowing you to:
Change values for the release and next development version
Choose a target staging repository for deployment of the release, and
Create a VCS tag for the release.
Staged release builds can later be or , changing their release status in Artifactory and, optionally, moving the build promoted rolled-back
artifacts to a different target repository.
Inside Artifactory, the history of all build status change activities (staged, promoted, rolled-back, etc.) is for full recorded and displayed
traceability.
Maven Release Management
Release management with Maven is performed entirely by the plugin and executes the Maven build only once.
These are the basic steps that the plugin performs:
Changes the POM versions to the release version (before the build starts)
Triggers the Maven build (with optionally different goals)
Commits/pushes changes to the tag (Subversion) or the release branch (Git)
Changes the POM versions to the next development version
Commits/pushes changes to the trunk
In case of a failure, the plugin attempts to rollback the changes (local and committed).
Configuring Maven Jobs
To enable release management in Maven jobs, edit the job configuration and mark the "Enable Artifactory release management" checkbox.
Staging a Maven Release Build
Once the release management is enabled, the Artifactory release staging link appears on the top header bar in the job page.
Clicking on the release staging link opens a new page with configuration options for the release build:
The release staging page displays the last build version (the version is of the root pom and it is taken from the last non-release build).
Most of the fields in the form are completed with the default values.
Version configuration controls how the plugin changes the version in the pom files (global version for all modules, version per module or no
version changes).
If the create VCS checkbox is marked (default), the plugin commits/pushes the poms with the release version to the VCS system with the commit
comment. When using Git, there is also an option to create a release branch.
If the target Artifactory server is the Pro edition, the last section lets you change the target repository (the default is
the release repository configured in Artifactory publisher) and to add a staging comment included in the build info
deployed to Artifactory.
Click on the "Build and Release to Artifactory" button to trigger the release build.
Promoting a Release Build
After a release build completes successfully, it is possible to promote the build. This is not a required step, but very useful if you want to mark the
build as released in Artifactory and to move/copy the built artifacts to another repository so the artifacts are available to other users.
To activate the action click on the 'Artifactory' tab link in the build result page.
Artifactory Compatibility
Artifactory Pro is required for promotion
1.
2.
3.
4.
5.
Clicking on the link will open the promotion page:
Select the target status (Released or Rolled-Back) of the build and optional comment to display in the build in Artifactory.
To move or copy the build artifacts select the target repository.
Gradle Release Management
The release management in Gradle relies on version (and other) properties managed by the file. gradle.properties
Add all the relevant properties to the release management configuration, and the plugin reads and modifies those properties in the gradle.propert
file. ies
These are the basic steps that the plugin performs:
Changes the gradle.properties with release values (before the build starts)
Triggers the Gradle build step (with optionally different tasks and options)
Commits/pushes changes to the tag (Subversion) or the release branch (Git)
Changes the gradle.properties with next integration values
Commits/pushes changes to the trunk
Configuring Gradle Jobs
The release management is also available for Gradle tasks in the Gradle Artifactory task.
To enable Gradle release management, edit the Artifactory Gradle Task configuration and mark the "Enabled Release Management" checkbox.
Staging a Gradle Release Build
Once the release management is enabled, the Artifactory release staging link appears in the top header bar on the job page.
Clicking on the release staging link opens a new page with configuration options for the release build:
The release staging page displays the release and next development properties configured for the job. The values are read from the gradle.prop
file and calculation of the release and next integration version is attempted and displayed in the text fields. erties
If the Create VCS checkbox is marked (default), the plugin commits/pushes the POMs with the release version to the VCS system with the
commit comment. When using Git, if 'Use Release Branch' is checked, the next release version changes are performed on the branch instead of
the current checkout branch.
The last section allows you to change the target repository (the default is the release repository configured in
Artifactory publisher) and optional staging comment which is included in the build info deployed to Artifactory.
Click on the "Build and Release to Artifactory" button to trigger the release build.
Promoting a Release Build
1.
2.
1.
2.
3.
4.
5.
6.
Promotion is the same as . RTD:as in Maven
Working with Subversion
The release management supports Subversion SCM when using one checkout directory.
During the release the plugin performs the following:
Commits the release version directly to the tag (if the Create Tag checkbox is marked). The release version is not committed to the to
the working branch.
Commits the next development version to the working branch
Working with Git
To work with Git, the Git plugin must be configured to build one branch to checkout to the same local branch. AND
The remote URL should allow Read+Write access.
The plugin uses the Gitclient installed on the machine and uses its credentials to push back to the remote Git repository.
License Control
Controlling Third Party Licenses
The License Control Add-on completes the Add-on allowing you full control over the licenses of the dependencies Artifactory Build Integration
used by your builds (and eventually in your software).
This Add-on is part of the Artifactory Pro Power Pack.
As part of the Build Server deployment to Artifactory, it analyzes the used dependencies and tries to match them against a set of license
management rules.
Notifications can be sent to a selected list of recipients about dependencies with unknown or unapproved license information.
To support this feature Artifactory includes a new license management facility where rules about license matching and approval status are
defined. These rules are consulted as part of the license analysis.
Central License Management
Licenses are managed under the Admin tab and then . Configuration -> Licenses
Shallow Clones
Bamboo's Git plugin allows the use of shallow clones. However, this causes the 'push' not to work.
Therefore, when using the Artifactory-Bamboo plugin, you must have shallow clones . unchecked
You can read more about shallow clones here
How does license analysis work?
Automatic analysis is performed upon deployment by examining information found in artifact module files. Currently and Maven POM I
files are supported. vy Descriptor
You can always override the automatic results and assign license information manually to dependencies. You can also compare the
current license status to the auto calculated one and decide what results of the automatic analysis to accept.
License information is stored with the artifact and reused by the automatic license analysis on subsequent builds.
Editing License Information
For each license, you can configure general license information, the regular expression by which to match the license (by comparing it to license
information in module files) and whether the license is an approved one or not.
Artifactory comes preconfigured with all the common licenses and JFrog has already tuned these licenses against common project builds. OSI
If you leave the regexp field blank, Artifactory attempts an exact match against the license key.
Finally, you can export the license list and import it later on to new Artifactory instances.
Using Build Licenses
Build Server Configuration
When you run a build from your CI server (Hudson, TeamCity or Bamboo), configure the Artifactory Plugin to run license checks as part of the
build.
Below is a sample section from the Hudson configuration of the Artifactory Plugin:
You can configure whether or not you wish license checks to take place as part of deploying Build Info to Artifactory (the Build Info Bill of
Materials must be deployed to Artifactory for license checks to run).
You can also set a list of recipients to be notified about license violations as soon as they occur. This way whenever a dependency with an
unknown or unapproved license is added to the build recipients receive an immediate email notification and can tend to any potential license
violation.
Examining Build Licenses
Once the build has finished on the build server and Build Info has deployed to Artifactory, license checks are run.
The build license information is available under the Artifacts tab and then Drill down to the specific build and select the Browse -> Builds.
tab. Licenses
The licenses tabs contains information about all the dependencies used in the build (with selectable scopes) and the license they are associated
with.
Sending license violation notifications is performed through Artifactory and requires a to be configured. valid mail server
Not failing the build
Currently, Artifactory does not fail the build as a result of license violations.
This is an informed decision in the spirit of allowing technical development to continue, while alerting others about the advent of
unauthorized dependencies in near or real-time, so they can be addressed early on by the appropriate parties.
1.
2.
3.
You can export this information as a CSV file.
The summary panel displays the overall count of licenses by status and inside the table itself, licenses are displayed in different colors according
to their status:
License Status Description
Unapproved
asSystem {
//This code runs as the system role
}
download {
/**
* Provide an alternative response, by one of the following methods:
* (1) Setting a success/error status code value and an optional error message.
* (2) Provide an alternative download content, by setting new values for the
inputStream and size context variables.
*
* Note that, unless specifically handled, checksum requests for altered responses
will return the checksum of the
* original resource, which may not match the checksum of the alternate response.
*
* Will not be called if the response is already committed (e.g. a previous error
occurred).
* Currently called only for GET requests where the resource was found.
*
* Context variables:
* status (int) - a response status code. Defaults to -1 (unset).
* message (java.lang.String) - a text message to return in the response body,
replacing the response content.
* Defaults to null.
* inputStream (java.io.InputStream) - a new stream that provides the response
content. Defaults to null.
* size (long) - the size of the new content (helpful for clients processing the
response). Defaults to -1.
*
*
* Closure parameters:
* request (org.artifactory.request.Request) - a read-only parameter of the request.
* responseRepoPath (org.artifactory.repo.RepoPath) - a read-only parameter of the
response RepoPath (containing the
* physical repository the
resource was found in).
*/
altResponse { request, responseRepoPath ->
}
/**
* Provides an alternative download path under the same remote repository, by
setting a new value to the path
* variable.
*
* Context variables:
* path (java.lang.String) - the new path value. Defaults to the originalRepoPath's
path.
*
* Closure parameters:
* repoPath (org.artifactory.repo.RepoPath) - a read-only parameter of the original
request RepoPath.
*/
altRemotePath { repoPath ->
}
/**
* Provide an alternative download content, by setting new values for the
inputStream and size context variables.
*
* Context variables:
* inputStream (java.io.InputStream) - a new stream that provides the response
content. Defaults to null.
* size (long) - the size of the new content (helpful for clients processing the
response). Defaults to -1.
*
* Closure parameters:
* repoPath (org.artifactory.repo.RepoPath) - a read-only parameter of the original
request RepoPath.
*/
altRemoteContent { repoPath ->
}
/**
* In case of resolution error provide an alternative response, by setting a
success/error status code value and an optional error message.
* Will not be called if the response is already committed (e.g. a previous error
occurred).
* As opposite to altResponse, called only for GET requests during which error
occurred (e.g. 404 - not found, or 409 - conflict).
*
* Context variables:
* status (int) - a response error status code (may be overridden in the plugin).
* message (java.lang.String) - a response error message (may be overridden in the
plugin).
* inputStream (java.io.InputStream) - a new stream that provides the response
content. Defaults to null.
* size (long) - the size of the new content (helpful for clients processing the
response). Defaults to -1.
*
* Closure parameters:
* request (org.artifactory.request.Request) - a read-only parameter of the
request.
*/
afterDownloadError { Request request ->
}
/**
* Handle before remote download events.
*
* Closure parameters:
* request (org.artifactory.request.Request) - a read-only parameter of the request.
[since: 2.3.4]
* repoPath (org.artifactory.repo.RepoPath) - a read-only parameter of the original
request RepoPath.
*/
beforeRemoteDownload { request, repoPath ->
}
/**
* Handle after remote download events.
*
* Closure parameters:
* request (org.artifactory.request.Request) - a read-only parameter of the request.
[since: 2.3.4]
* repoPath (org.artifactory.repo.RepoPath) - a read-only parameter of the original
request RepoPath.
*/
afterRemoteDownload { request, repoPath ->
}
/**
* Handle before local download events.
*
* Closure parameters:
* request (org.artifactory.request.Request) - a read-only parameter of the request.
* responseRepoPath (org.artifactory.repo.RepoPath) - a read-only parameter of the
response RepoPath (containing the
* physical repository the
resource was found in).
*/
beforeDownload { request, responseRepoPath ->
}
}
Storage
Handling and Manipulating Storage Events
If you want to abort an action, you can do that in 'before' methods by throwing a runtime org.artifactory.exception.CancelException with an error
message and a proper http error code.
storage {
/**
* Handle before create events.
*
* Closure parameters:
* item (org.artifactory.fs.ItemInfo) - the original item being created.
*/
beforeCreate { item ->
}
/**
* Handle after create events.
*
* Closure parameters:
* item (org.artifactory.fs.ItemInfo) - the original item being created.
*/
afterCreate { item ->
}
/**
* Handle before delete events.
*
* Closure parameters:
* item (org.artifactory.fs.ItemInfo) - the original item being being deleted.
*/
beforeDelete { item ->
}
/**
* Handle after delete events.
*
* Closure parameters:
* item (org.artifactory.fs.ItemInfo) - the original item deleted.
*/
afterDelete { item ->
}
/**
* Handle before move events.
*
* Closure parameters:
* item (org.artifactory.fs.ItemInfo) - the source item being moved.
* targetRepoPath (org.artifactory.repo.RepoPath) - the target repoPath for the move.
* properties (org.artifactory.md.Properties) - user specified properties to add to
the item being moved.
*/
beforeMove { item, targetRepoPath, properties ->
}
/**
* Handle after move events.
*
* Closure parameters:
* item (org.artifactory.fs.ItemInfo) - the source item moved.
* targetRepoPath (org.artifactory.repo.RepoPath) - the target repoPath for the move.
* properties (org.artifactory.md.Properties) - user specified properties to add to
the item being moved.
*/
afterMove { item, targetRepoPath, properties ->
}
/**
* Handle before copy events.
*
* Closure parameters:
* item (org.artifactory.fs.ItemInfo) - the source item being copied.
* targetRepoPath (org.artifactory.repo.RepoPath) - the target repoPath for the copy.
* properties (org.artifactory.md.Properties) - user specified properties to add to
the item being moved.
*/
beforeCopy { item, targetRepoPath, properties ->
}
/**
* Handle after copy events.
*
* Closure parameters:
* item (org.artifactory.fs.ItemInfo) - the source item copied.
* targetRepoPath (org.artifactory.repo.RepoPath) - the target repoPath for the copy.
* properties (org.artifactory.md.Properties) - user specified properties to add to
the item being moved.
*/
afterCopy { item, targetRepoPath, properties ->
}
/**
* Handle before property create events.
*
* Closure parameters:
* item (org.artifactory.fs.ItemInfo) - the item on which the property is being set.
* name (java.lang.String) - the name of the property being set.
* values (java.lang.String[]) - A string array of values being assigned to the
property.
*/
beforePropertyCreate { item, name, values ->
}
/**
* Handle after property create events.
*
* Closure parameters:
* item (org.artifactory.fs.ItemInfo) - the item on which the property has been set.
* name (java.lang.String) - the name of the property that has been set.
* values (java.lang.String[]) - A string array of values assigned to the property.
*/
afterPropertyCreate { item, name, values ->
}
/**
* Handle before property delete events.
*
* Closure parameters:
* item (org.artifactory.fs.ItemInfo) - the item from which the property is being
deleted.
* name (java.lang.String) - the name of the property being deleted.
*/
beforePropertyDelete { item, name ->
}
/**
* Handle after property delete events.
*
* Closure parameters:
* item (org.artifactory.fs.ItemInfo) - the item from which the property has been
deleted.
* name (java.lang.String) - the name of the property that has been deleted.
*/
afterPropertyDelete { item, name ->
}
}
Jobs
Defining Scheduled Jobs
jobs {
/**
* A job definition.
* The first value is a unique name for the job.
* Job runs are controlled by the provided interval or cron expression, which are
mutually exclusive.
* The actual code to run as part of the job should be part of the job's closure.
*
* Parameters:
* delay (long) - An initial delay in milliseconds before the job starts running
(not applicable for a cron job).
* interval (long) - An interval in milliseconds between job runs.
* cron (java.lang.String) - A valid cron expression used to schedule job runs (see:
http://www.quartz-scheduler.org/docs/tutorial/TutorialLesson06.html)
*/
myJob(interval: 1000, delay: 100) {
}
mySecondJob(cron: "0/1 * * * * ?") {
}
}
Executions
Defining External Executions
Since: 2.3.1 - External executions are invoked via REST POST requests. For example:
curl -X POST -v -u admin:password
"http://localhost:8080/artifactory/api/plugins/execute/myExecution?params=msg=And+the+
result+is:|no1=10|no2=15&async=0"
executions {
/**
* An execution definition.
* The first value is a unique name for the execution.
*
* Context variables:
* status (int) - a response status code. Defaults to -1 (unset). Not applicable for
an async execution.
* message (java.lang.String) - a text message to return in the response body,
replacing the response content.
* Defaults to null. Not applicable for an async
execution.
*
* Plugin info annotation parameters:
* version (java.lang.String) - Closure version. Optional.
* description (java.lang.String - Closure description. Optional.
* params (java.util.Map<java.lang.String, java.lang.String>) - Closure default
parameters. Optional.
* users (java.util.Set<java.lang.String>) - Users permitted to query this plugin
for information or invoke it.
* groups (java.util.Set<java.lang.String>) - Groups permitted to query this plugin
for information or invoke it.
*
* Closure parameters:
* params (java.util.Map) - An execution takes a read-only key-value map that
corresponds to the REST request
* parameter 'params'. Each entry in the map conatains an array of values.
*/
myExecution(version:version, description:description, users:[], groups:[],
params:[]) { params ->
}
}
Realms
Management of Security Realms
Realms defined here are added before any built-in realms (Artifactory internal realm, LDAP, Crowd etc.). User authentication will be attempted
against these realms first, by the order they are defined.
realms {
/**
* An security realm definition.
* The first value is a unique name for the realm.
*
* Closure parameters:
* autoCreateUsers (boolean) - Whether to automatically create users in Artifactory
upon successul login. Defaults to
* true. When false, the user will be transient and his privileges will be managed
according to permissions defined
* for auto-join groups.
*/
myRealm(autoCreateUsers: true) {
/**
* Implementation should return true/false as the result of the authentication.
*
* Context variables:
* groups (java.lang.String[]) - An array of groups that the authenticated user
should be associated with (since 3.0.2).
*
* Closure parameters:
* username (java.lang.String) - The username
* credentials (java.lang.String) - The password
*/
authenticate { username, credentials ->
}
/**
* Implementation should return true if the user is found in the realm.
* Closure parameters:
* username (java.lang.String) - The username
*/
userExists { username ->
}
}
}
Build
uild Info Events Handling B
Since 2.6
build {
/**
* Handle before build info save events
*
* Closure parameters:
* buildRun (org.artifactory.build.DetailedBuildRun) - Build Info model to be saved.
Partially mutable.
*/
beforeSave { buildRun ->
}
/**
* Handle after build info save events
*
* Closure parameters:
* buildRun (org.artifactory.build.DetailedBuildRun) - Build Info that was saved.
Partially mutable.
*/
afterSave { buildRun ->
}
}
Promotions
Defining Operations REST ExecutableBuild Promotion
Since 2.6
promotions {
/**
* A REST executable build promotion definition.
*
* Context variables:
* status (int) - a response status code. Defaults to -1 (unset).
* message (java.lang.String) - a text message to return in the response body,
replacing the response content. Defaults to null.
*
* Plugin info annotation parameters:
* version (java.lang.String) - Closure version. Optional.
* description (java.lang.String - Closure description. Optional.
* params (java.util.Map<java.lang.String, java.lang.String>) - Closure parameters.
Optional.
* users (java.util.Set<java.lang.String>) - Users permitted to query this plugin
for information or invoke it.
* groups (java.util.Set<java.lang.String>) - Groups permitted to query this plugin
for information or invoke it.
*
* Closure parameters:
* buildName (java.lang.String) - The build name specified in the REST request.
* buildNumber (java.lang.String) - The build number specified in the REST request.
* params (java.util.Map<java.lang.String, java.util.List<java.lang.String>>) - The
parameters specified in the REST request.
*/
promotionName(version, description, users, groups, params) { buildName, buildNumber,
params ->
}
}
Staging
Defining Build Staging Strategy Construction REST retrievable
Since 2.6.1
1.
2.
3.
/**
* Set of staging strategy definitions to be used by the build server during staging
process.
* The strategy provides the build server with the following information:
* 1. How the artifacts in the staged build should be versioned;
* 2. How the artifacts in the next integration build should be versioned;
* 3. Should the build server create a release branch/tag/stream in VCS and how it
should be called;
* 4. To which repository in Artifactory the built artifacts should be submitted.
*
* This user plugin is called by the build server using REST call.
*/
staging {
/**
* A build staging strategy definition.
*
* Closure delegate:
* org.artifactory.build.staging.BuildStagingStrategy - The strategy that's to be
returned.
*
* Plugin info annotation parameters:
* version (java.lang.String) - Closure version. Optional.
* description (java.lang.String - Closure description. Optional.
* params (java.util.Map<java.lang.String, java.lang.String>) - Closure parameters.
Optional.
* users (java.util.Set<java.lang.String>) - Users permitted to query this plugin for
information or invoke it.
* groups (java.util.Set<java.lang.String>) - Groups permitted to query this plugin
for information or invoke it.
*
* Closure parameters:
* buildName (java.lang.String) - The build name specified in the REST request.
* params (java.util.Map<java.lang.String, java.util.List<java.lang.String>>) - The
parameters specified in the REST request.
*/
strategyName(version, description, users, groups, params) { buildName, params ->
}
}
Sample Plugin
Sample plugin is . available to download
YUM Repositories
Overview
Artifactory can act as a full-fledged YUM repository (since Artifactory 2.4.0). As such, it provides:
RPM metadata calculation for RPMs hosted in Artifactory local repositories.
Provisioning RPMs directly from Artifactory to YUM clients.
Detailed RPM metadata views from Artifactory's web UI.
Watch this short screencast to learn how easy it is to host RPMs in Artifactory.
1.
2.
3.
4.
RPM Metadata for Hosted RPMs
The RPM metadata generated by Artifactory is identical to the basic-mode output of the Red Hat-based Linux command . createrepo
A folder named is created in the configured location within a local repository with the following files in it: repodata
primary.xml.gz - Contains an XML file describing the primary metadata of each RPM archive.
filelists.xml.gz - Contains an XML file describing all the files contained within each RPM archive.
other.xml.gz - Contains an XML file describing miscellaneous information regarding each RPM archive.
repomd.xml - Contains information regarding all the other metadata files.
Triggering RPM Metadata Updates
When enabled, the calculation is run in a number of ways:
Automatically when deploying/removing/copying/moving an RPM file.
Automatically when performing content import (both system and repository imports).
Manually via "Calculate Now" in the local repository YUM configuration tab.
Manually via Artifactory's . REST-API
The produced metadata is served to YUM clients.
Configuration
To enable RPM metadata calculation on a local repository click on the Admin tab and then Select the repository Configuration -> Repositories.
as described in and select the Packages tab. local repository configuration
YUM Support is Platform Independent!
Artifactory employes a RPM metadata calculation. pure Java-based
It does not rely on the existence of the createrepo binary or on running external processes on the host
upon which Artifactory is running.
Metadata calculation cleans up pre-existing YUM metadata (existing as a result of manual deployment or import), including RPM
metdata stored as SQLite database files.
1.
2.
The field tells Artifactory under which level of directory to search for RPMs and save the directory. Depth repodata
0 is the default and refers to the repository's root folder; the calculator searches the entire repository for RPMs and
save the repodata directory at $REPO-KEY/repodata.
Using a different depth is useful in cases where generating metadata for a repository separates its artifacts by name, version and architecture.
For example:
If the repository layout is similar to that shown below and you want to generateRPM metadata for every artifact divided by name, set the t Depth
o and the directory is saved at : 1 repodata REPO_ROOT/ARTIFACT_NAME/repodata
REPO_ROOT/$ARTIFACT_NAME/$ARTIFACT_VERSION/$ARCHITECTURE/FILE_NAME
- or -
libs-release-local/foo/1.0/x64/foo-1.0-x64.rpm
YUM Groups
Artifactory supports attaching a upon YUM calculation, essentially mimic the command. YUM Group file createrepo -g
The process of attaching YUM group metadata to a local repository is simple:
Create an xml file in the groups format used by YUM, you can either open a text editor and create the groups xml file manually or you
can run the yum-groups-manager command from yum-utils
Deploy the created group file to the 'repodata' folder, Artifactory will automatically perform the following steps:
Create the corresponding gz file and deploy it next to the deployed xml group fie.
Invoke YUM calculation on the local repository.
Metadata calculation is throttled per metadata base-folder and is asynchronous; Artifactory invokes the actual calculation only after a
certain "quiet period" following an action involving update or removal of an RPM file.
For this reason, the creation of the metadata normally occurs 1-2 minutes after an RPM-related action has been completed.
2.
3.
Attach the group information (both the xml and the gz file) to the repomd.xml file.
Make sure the group file names are listed under the Packages tab, this tells Artifactory the files to be attached as a repository group
information.
This is how the local repository appears after deploying a 'groups.xml' group metadata file to it ('repodata' is calculated on depth 0):
On this tab, you must enable P2 support and then add either a local repository that hosts your P2 metadata and content or remote P2 repository
URLs you want to aggregate.
P2 Local Repository
Local repositories do not have any P2 dedicated configuration, choose the desired local repository from the repositories combo box and add a
sub path pointing to the P2 metadata files( , etc.). When the sub path field is left content.jar, artifacts.jar, compositeContent.xml
empty, P2 metadata files are assumed to reside directlyunder the repository's root.
If you have a Tycho repository deployed to a local repository as a single archive, specify the archive's root path. For
example:'eclipse-repository.zip!/'.
For each local repository added, you can (and should) include the repository in the listof (local and remote) repositories aggregated by this
virtual repository.
The following options are proposed for a remote repository in the repositories list table:
Include: Adds the local repository to the list of repositoriesaggregatedby this virtual repository.
Included: Shows the repository is already included in the virtual repository.
P2 Remote Repository
1.
2.
1.
2.
3.
4.
Select a P2 repository URL to add to Artifactory.The URL entered here should point at the path where P2 metadata files are found (content.j
ar, artifacts.jar, compositeContent.xml, etc.).
For example:
The main Juno repository:http://download.eclipse.org/releases/juno
The Google plugins repository for Indigo (GWT, GAE, etc.):http://dl.google.com/eclipse/plugin/3.7
Artifactory analyzes the added URL and based on the remote P2 metadata, identifies which remote repositories are required to be created in
Artifactory (remote P2 repositories mayaggregateinformation from different hosts).
For each identified remote repository you can (and should) create andinclude the repository in the listof (local and remote) repositories
aggregated by this virtual repository.
The following options are proposed for a remote repository in the repositories list table:
Create: Create a new, P2 enabled, remote repository with the given key (the remote repo key is editable).
Modify: Enable P2 support in an existing remote repository.
Include: Add the remote repository to the list of repositoriesaggregatedby this virtual repository.
Included: Shows the repository is already included in the virtual repository.
1.
2.
Proxying remote RubyGems repository
In order to proxy a remote RubyGems repository, such ashttp://rubygems.org,
do the following:
Browse the Artifactory user interface to Admin -> Configuration -> Repositories, and click on New under Remote Repositories
Set the Repository Key, and set the URL value to the remote repository URL
In order to gems to the local repository, you have to set the global variable to point to the local repository. push $RUBYGEMS_HOST
exportRUBYGEMS_HOST= REPO_KEY http://ARTIFACTORY_HOST/artifactory/api/gems/
You can copy this value from General Tab as described earlier, under the Target section, for example:
Another possibility is to use the with --host, and optionally, the --key to specify the relevant API key. gem push
The REST API supports the basic binary repository operations, such as download, deploy, delete etc.
In addition, some of the RubyGems.org API gem commands are supported:
Gem command Curl syntax example Remarks
Info curl /api/v1/gems/ $ART_GEMS/REPO_KEY
my_gem.(json|xml|yaml)
Optionally indicate JSON / XML / YAML
(default: JSON)
Search curl /api/v1/search $ART_GEMS/REPO_KEY
?query=[query] .(json|xml|yaml)
Will search for gems with name containing q
uery
Dependencies curl /api/v1/depen $ART_GEMS/REPO_KEY
dencies?gems=[gem1,...]
Use a csv of gem names for the value of ge
ms
Yank curl -X DELETE /a $ART_GEMS/REPO_KEY
pi/v1/yank
-d 'gem_name=gem_name' -d 'version=0.0.1
' -d 'platform=ruby'
Deletes the specific gem file from the
repository
Without auto user creation, you will need to manually create the user
inside Artifactory in order to manage user permissions that are not
attached to his default groups.
Filter by Username Filter the search by username to see only groups of the specified
username
If unchecked, all Crowd groups are shown.
Without auto user creation, you must manually create the user inside
Artifactory to manage user permissions not attached to its default
groups.
Integrating Apache and Tomcat
When Artifactory is deployed as a webapp on Tomcat behind Apache:
If using - Make sure to set on the AJP connector. mod_proxy_ajp tomcatAuthentication="false"
If using - Make sure to use the directive in Apache's configuration. mod_jk JkEnvVar REMOTE_USER
If using (requires , and - There are two known working methods that forward mod_proxy mod_proxy_http mod_headers mod_rewrite
the header:
Adding Your Own SSO Integration
You can write a simple servlet filter to integrate with custom security systems and set a request attribute on the request to be trusted
by the SSO add-on.
1.
2.
3.
4.
5.
6.
7.
8.
9.
RequestHeader set REMOTE_USER %{REMOTE_USER}e
or
RewriteEngine On
RewriteCond %{REMOTE_USER} (.+)
RewriteRule . - [E=RU:%1]
RequestHeader set REMOTE_USER %{RU}e
SAML SSO Integration
SAML (Security Assertion Markup Language)
SAML is an XML standard that allows you to exchange user authentication and authorization information between web domains.
JFrogs Artifactory offers a SAML-based Single Sign-On service allowing federated Artifactory partners (identity providers) full control over the
authorization process.
Using SAML, Artifactory acts as service provider which receives users authentication information from external identity providers.
In such case Artifactory is no longer responsible to authenticate the user although it still has to redirect the login request to the identity provider
and verify the integrity of the identity providers response.
Artifactorys SAML configuration
To use our SAML-based SSO in Artifactory:
Login as administrator to Artifactory
Click on the admin tab
Click on SAML Integration in the Security menu
Enable the SAML integration by checking the SAML Integration checkbox
Enable or disable the Auto create Artifactory users (Using SAML login) which allows to persist new users in the database
Provide the Identity provider http login redirect URL
Provide the identity provider http logout redirect URL
that in order to simultaneously logout from IDP and Artifactory, theIDPs logout URL must be provided, settingany other URL in NOTE!
the SAML Logout field, will logout from Artifactory but not from the identity provider
Provide the service provider name (Artifactory name in SAML federation)
Provide X.509 certificate that contains the public key. The public key can use either the DSA or RSA algorithms. Artifactory uses this key
to verify SAML response origination and integrity. It is important to match the embedded public key in the X.509 certificate with the
private key used to sign the SAML response.
9.
1.
2.
3.
4.
5.
6.
7.
8.
9.
Push To Bintray
Overview
This page describes the process of pushing a single artifact or a complete release build from Artifactory to . Bintray
Bintray is a public online service through which you can share your release binaries with the world.Note that once artifacts are pushed, you need
to publish them in Bintray in order to make them world-visible.
General
Under the hood Artifactory utilizes the feature to save the Bintray push information, these are: Properties
bintray.repo -A target repository in Bintray, in the format of {username}/{repository}
- bintray.package A target package name under the repository.You must create the package in Bintray first if it does not exist.
- bintray.version A target version under the package.If the version does not yet exist in Bintray, it is auto-created.
- bintray.path A target path in the repository to save the file under.
Troubleshooting
The Artifactory Mailing Lists
The best way to get help is to use our mailing list: Artifactory Users
Archive using Nabble
Subscribe using mailman
Release Notes
Artifactory 3.0.0
Artifactory 3.0.2
Artifactory 3.0.1
Artifactory 2.x
Artifactory 2.6.7
Artifactory 2.6.6
Artifactory 2.6.5
Artifactory 2.6.4
Artifactory 2.6.3
Artifactory 2.6.2
Artifactory 2.6.1
Artifactory 2.6.0
Artifactory 2.5.2
Artifactory 2.5.1.1
Artifactory 2.5.1
Artifactory 2.5.0
Artifactory 2.4.2
Artifactory 2.4.1
Artifactory 2.4.0
Artifactory 2.3.4.1
Artifactory 2.3.4
Artifactory 2.3.3
Artifactory 2.3.2
Artifactory 2.3.1
Artifactory 2.3.0
Artifactory 2.2.5
Artifactory 2.2.4
Artifactory 2.2.3
Artifactory 2.2.2
Artifactory 2.2.1
Artifactory 2.2.0
Artifactory 2.1.3
Artifactory 2.1.2
Artifactory 2.1.1
1.3.0-RC2
1.3.0-RC1
1.3.0-beta-6
1.3.0-beta-5
1.3.0-beta-4
1.3.0-beta-3
Artifactory 2.x
Artifactory 2.6.7
Artifactory 2.6.6
Artifactory 2.6.5
Artifactory 2.6.4
Artifactory 2.6.3
Artifactory 2.6.2
Artifactory 2.6.1
Artifactory 2.6.0
Artifactory 2.5.2
Artifactory 2.5.1.1
Artifactory 2.5.1
Artifactory 2.5.0
Artifactory 2.4.2
Artifactory 2.4.1
Artifactory 2.4.0
Artifactory 2.3.4.1
Artifactory 2.3.4
Artifactory 2.3.3
Artifactory 2.3.2
Artifactory 2.3.1
Artifactory 2.3.0
Artifactory 2.2.5
Artifactory 2.2.4
Artifactory 2.2.3
Artifactory 2.2.2
Artifactory 2.2.1
Artifactory 2.2.0
Artifactory 2.1.3
Artifactory 2.1.2
Artifactory 2.1.1
1.3.0-RC2
1.3.0-RC1
1.3.0-beta-6
1.3.0-beta-5
1.3.0-beta-4
1.3.0-beta-3
1.3.0-RC2
Artifactory 1.3.0-RC2
We are pleased to announce the availability of Artifactory 1.3.0-RC2.
Major Features and Changes in This Release
Deleting (undeploying) artifacts immediately updates the relevant maven-metadata.xml.
Ability to upload and deploy a bundle of multiple artifacts (zip archive) arranged in m2 format.
Bug fixes.
Enjoy
The Artifactory Team
Installing
Please refer to the section of the current user guide, which still applies. Installing
Upgrading from 1.3.0-RC1
Just replace the war file. If you are running on Tomcat make sure to also remove the exploded artifactory webapp directory.
Upgrading from 1.2.2-rc0 through 1.3.0-beta-6.1
Artifactory is available for immediate download from . here
You can browse the full JIRA release notes . here
1.
2.
1.
2.
3.
1.
2.
3.
4.
5.
1.
2.
a.
b.
3.
4.
Upgrading Artifactory from older version can be done in two ways:
From the UI
By using the command line tool artadmin
Upgrading Using the Web UI
Upgrading from the UI is currently supported only from previous 1.3.0-x versions.
From your old Artifactory installation run Full System Export and save the export to a destination directory.
Perform a new clean server installation of the new Artifactory (It should not contain repository data or your customized version of the
Artifactory configuration xml file).
Install the new Artifactory version, go to , select your previous export target directory and let Admin/Export&Import/System/Import System
the import run. That's it!
Upgrading Using the Tool artadmin
While upgrading from the web UI is easy and straightforward, sometimes the upgrade process can take a long time, especially with very large
repositories. In such cases the original web request may time out and the upgrade progress will proceed in the background.
Therefore, if you wish to monitor the progress of the upgrade process in the most reliable way and gain access to more advanced dump options,
it is recommended to use the command-line tool. artadmin
Here are step-by-step instructions:
Stop your old Artifactory.
Execute the command on the old or on a copy of it (recommended): artadmin dump $ARTIFACTORY_HOME
artadmin dump $ARTIFACTORY_HOME
This will generate a folder under the current execution directory with the old repository data in a format suitable for dumpExport
importing into a current Artifactory.
NOTE: By default, caches (e.g. repo1) are . To export caches add the parameter. not exported --caches
Perform a new clean server installation of the new Artifactory (It should not contain repository data or your customized version of the
Artifactory configuration xml file).
Start the new Artifactory.
Import the folder into Artifactory, either from the UI, as explained in the previous section or by running: dumpExport
artadmin import dumpExport --username admin --password password
The output will display the progress of the import. NOTE: If the process is killed, the import will still run in artadmin artadmin
Artifactory.
Important Information
If you are running Artifactory under JDK 1.6 you MUST use and above due to incompatibilities with older JAXB versions JDK 1.6u4
embedded in previous JDK 1.6 releases. JDK 1.5 users are not affected by this.
If you have used a previous version of Artifactory it is highly recommended to:
Use a fresh version of Artifactory from the distribution and not try to patch the previous installation.
Clear your browser's cache before using this version.
The default Artifactory user for the standalone installation has been changed to (instead of ). You might have to artifactory jetty
update the provided install script or your file system permissions accordingly.
Please note that not all documentation has been updated yet to reflect the latest changes in this release.
Please read this carefully before installing or upgrading:
Important information about the import process
During the import binary artifacts are copied over into a working copy and are imported into Arifactory in by a background thread. This
speeds up the import process dramatically and makes Artifactory ready for serving requests as soon as possible. The background
import process will take some time to completes, depending on the size of your repository. During this time Artifactory might perform
more slowly than usual, but it will still serve any artifact immediately. The log does provide visible information about the progress of this
process.
Repeating the upgrade process
Should you wish to repeat the upgrade process from scratch, make sure to remove the folder from your $ARTIFACTORY_HOME/data
Major Features and Changes in release 1.3.0-rc-1
Flexible validation for remote checksums: Generate if absent (the default), Fail, Ignore and generate and Pass-through (please see the
UI for description of each policy).
Many bug fixes and stability improvements.
Better support. MySql
Improved support for Safari.
Artifactory and artadmin are now under a single downloadable distribution.
Better overall performance.
Major Features and Changes in release 1.3.0-beta-6
Artifactory is 100% configurable via the newly designed user interface
Support for running Artifactory with for greater scalability, performance and tools support. MySql
Support for running Artifactory under . Websphere
Install script for automatic set up under a dedicated instance. Tomcat
Ability to remove deployed versions with all their sub-artifacts in one go.
Dynamic log tailing from the UI.
Global offline flag for disconnected environments.
Out of the box support for running standalone Artifactory as a (in additional to the existing Unix service installer). Windows service
Unified CLI tool for all administrative tasks. artadmin
Greatly improved backup and restore speed.
Many internal performance and concurrency improvements.
The usual bug fixes.
Major Features and Changes in release 1.3.0-beta-5
In place incremental backup.
Performance improvements around security authentication and authorization.
Fixed a UI bug with remote repositories cache access control setup.
Major Features and Changes in release 1.3.0-beta-4
Improved - support for multiple DNs, for non-anonymous binding against MS Active Directory and for sub-tree searches. LDAP Support
Fixed a critical issue with deployment using the lightweight HTTP wagon (RTFACT-629).
UI and performance improvements and the usual bug fixes.
Major Features and Changes in release 1.3.0-beta-3
Group support with an intuitive powerful UI for groups management.
Improved permissions control for including/excluding specific repository paths (e.g. disallow certain users/groups from downloading
sources). Simple management - no regexp gurus required.
Support for delete permission and for preventing users from overriding exiting artifacts.
Revised repository tree browsing using tabs and effective permissions per item view.
Improved import speed by committing binary imports asynchronously.
Improved procedure. #upgrade
Better transaction management using Spring Modules for JCR.
Even faster in-place incremental backup.
Low-level admin-only direct WebDAV access to the underlying jackrabbit repository (use: to http://localhost:8081/artifactory/jcr/default/
connect).
The usual bug fixes, stability and speed improvements.
The complete release notes from Jira are available here:
1.3.0-rc-2
1.3.0-rc-1
1.3.0-beta-6
1.3.0-beta-5
1.3.0-beta-4
1.3.0-beta-3
1.3.0-RC1
Artifactory 1.3.0-RC1
We are pleased to announce the availability of Artifactory 1.3.0-RC1.
Major Features and Changes in this Release
new Artifactory installation before doing so.
Flexible validation for remote checksums: Generate if absent (the default), Fail, Ignore and generate and Pass-through (please see the
UI for description of each policy).
Many bug fixes and stability improvements.
Better support. MySql
Improved support for Safari.
Artifactory and artadmin are now under a single downloadable distribution.
Better overall performance.
Major Features and Changes in release 1.3.0-beta-6
Artifactory is 100% configurable via the newly designed user interface
Support for running Artifactory with for greater scalability, performance and tools support. MySql
Support for running Artifactory under . Websphere
Install script for automatic set up under a dedicated instance. Tomcat
Ability to remove deployed versions with all their sub-artifacts in one go.
Dynamic log tailing from the UI.
Global offline flag for disconnected environments.
Out of the box support for running standalone Artifactory as a (in additional to the existing Unix service installer). Windows service
Unified CLI tool for all administrative tasks. artadmin
Greatly improved backup and restore speed.
Many internal performance and concurrency improvements.
The usual bug fixes.
Major Features and Changes in release 1.3.0-beta-5
In place incremental backup.
Performance improvements around security authentication and authorization.
Fixed a UI bug with remote repositories cache access control setup.
Major Features and Changes in release 1.3.0-beta-4
Improved - support for multiple DNs, for non-anonymous binding against MS Active Directory and for sub-tree searches. LDAP Support
Fixed a critical issue with deployment using the lightweight HTTP wagon (RTFACT-629).
UI and performance improvements and the usual bug fixes.
Major Features and Changes in release 1.3.0-beta-3
Group support with an intuitive powerful UI for groups management.
Improved permissions control for including/excluding specific repository paths (e.g. disallow certain users/groups from downloading
sources). Simple management - no regexp gurus required.
Support for delete permission and for preventing users from overriding exiting artifacts.
Revised repository tree browsing using tabs and effective permissions per item view.
Improved import speed by committing binary imports asynchronously.
Improved procedure. #upgrade
Better transaction management using Spring Modules for JCR.
Even faster in-place incremental backup.
Low-level admin-only direct WebDAV access to the underlying jackrabbit repository (use: to http://localhost:8081/artifactory/jcr/default/
connect).
The usual bug fixes, stability and speed improvements.
The complete release notes from Jira are available here:
1.3.0-rc-1
1.3.0-beta-6
1.3.0-beta-5
1.3.0-beta-4
1.3.0-beta-3
Artifactory 1.3.0-beta-6 is available for immediate download . here
Enjoy
The Artifactory Team
Important Notes Before You Install
Artifactory is available for immediate download from . here
You can browse the full JIRA release notes . here
Please read this carefully before installing or upgrading:
1.
2.
a.
b.
3.
4.
5.
1.
2.
3.
4.
1.
2.
3.
4.
5.
6.
7.
a.
b.
a.
b.
c.
8.
If you are running Artifactory under JDK 1.6 you MUST use and above due to incompatibilities with older JAXB versions JDK 1.6u4
embedded in previous JDK 1.6 releases. JDK 1.5 users are not affected by this.
If you have used a previous version of Artifactory it is highly recommended to:
Use a fresh version of Artifactory from the distribution and not try to patch the previous installation.
Clear your browser's cache before using this version.
The default Artifactory user for the standalone installation has been changed to (instead of ). You might have to artifactory jetty
update the provided install script or your file system permissions accordingly.
Artifactory now includes a convenience method for specifying system properties. Instead of having to configure properties in the runtime
configuration of the hosting container, you can now edit the file and restart $ARTIFACTORY_HOME/etc/artifactory.properties
the container. As this affects the whole container VM it is recommended to use this feature for specifying Artifactory related properties
only (such as repository ids substitution, etc.).
Please note that not all documentation has been updated yet to reflect the latest changes in this beta release.
Below is important information that will make it into the final Artifactory 1.3.0 documentation.
Installing
Please refer to the section of the current user guide, which still applies. Installing
Upgrading from 1.2.2-rc0 through 1.3.0-beta-6.1
To upgrade from older versions you first need to dump the data from you old Artifactory into a 1.3 compatible format and then import it to the new
Artifactory.
We expect that with 1.3.0 and above upgrading can be done directly on an existing repository without the need to export it first.
Dumping the old version
Since Artifactory 1.3.0-beta-5, JFrog merged the tool with the main CLI administration tool: - creating the CLI " " artdump artadmin dump
command.
The tool can be found under the folder. artadmin $ARTIFACTORY_HOME/bin
Important Information for Running the Dump
By default, cached repositories (e.g. repo1) are . To export cached repositories pass the parameter. not exported --caches
You should shut down the old Artifactory before executing the export.
It is recommended to work on a copy of the old folder (even though the export should be a read only process). $ARTIFACTORY_HOME
If you do not specify a destination folder with option, the dump command will create a folder under the current --dest tmpExport
execution directory, where it will export all the data from your old Artifactory.
Step by Step Instructions
Here are step by step instructions for running the full upgrade process:
Stop the old Artifactory.
Optional: Copy the folder to a new location. $ARTIFACTORY_HOME
If you created a copy and wish the old Artifactory to keep serving requests while performing the export, you can start it now.
Execute the command on the old or on a copy of it, by running dump #artadmin $ARTIFACTORY_HOME artadmin dump
(This will generate a folder if you did not specify a destination folder with option). $ARTIFACTORY_HOME tmpExport --dest
Perform a new clean server installation of Artifactory 1.3. It should not contain repository data or your customized version of the
Artifactory configuration xml file.
Start Artifactory 1.3. Note: If in step 3 you chose to restart your old Artifactory and you installed the Artifactory 1.3 on the same machine,
you will need to alter the listening port number inside . It is also highly recommended to use a $ARTIFACTORY_HOME/etc/jetty.xml
different port in order to perform the upgrade on a "silent" instance that is not being hit by user requests in parallel.
The import can be done in 2 ways:
Import with the command line (highly recommended): artadmin
Execute artadmin import tmpExport --username username --password password.
The output will display the progress of the import. NOTE: If the process is killed, the import will artadmin artadmin
still run in Artifactory.
Import via the Web UI:
Logon with admin/password credentials, click the "Admin" tab and choose "System" from the "Import & Export"
sub-menu on the left.
Enter the export directory into the "System zip file or directory" field in the "Import System" field-set and click the
"Import" button.
The import will run and may take some time to complete (depending on the size of your database).
Once the import process completes successfully you can switch to using Artifactory 1.3. You can go back to use the old port number (if
you changed it in step 6).
Important information about the import process
8.
artadmin dump command line usage:
usage: dump [Artifactory home folder] ...
Artifactory will try to automcatically determine the previous version from
$ARTIFACTORY_HOME/webapps/artifactory.war if present.
If the war file cannot be found at this location, please do one of the
following:
1) link or copy it at this location, or pass the version.
2) pass one of the following version as second parameter:
1.2.2-rc0 1.2.2-rc1 1.2.2-rc2 1.2.2 1.2.5-rc0
1.2.5-rc1 1.2.5-rc2 1.2.5-rc3 1.2.5-rc4 1.2.5-rc5
1.2.5-rc6 1.2.5 1.2.5u1 1.3.0-beta-1 1.3.0-beta-2
1.3.0-beta-3 1.3.0-beta-4 1.3.0-beta-5
Valid options:
--dest [destination folder]: the destination folder for the new export
files. Default value: tmpExport
--version [version name]: the actual version of the old Artifactory if
the Update Manager cannot find it
--caches: include cached repositories in the export (by default caches
are not exported). If repo option is passed this option will be ignored
--security: only export the security file from DB, and set the norepo
flag
--repo [repo names separated by ':']: export only a specified list of
repositories. Default value: all-non-cached
--norepo: does not export the repositories, just convert config and
security
--convert: activate the Local and Virtual repository names conversion
--noconvert: does not activate the Local and Virtual repository names
conversion during a full export
artadmin import command line usage:
During the import binary artifacts are copied over into a working copy and are imported into Arifactory in by a background
thread. This speeds up the import process dramatically and makes Artifactory ready for serving requests as soon as possible.
The background import process will take some time to completes, depending on the size of your repository. During this time
Artifactory might perform more slowly than usual, but it will still serve any artifact immediately. The log does provide visible
information about the progress of this process.
Repeating the upgrade process
Should you wish to repeat the upgrade process from scratch, make sure to remove the folder $ARTIFACTORY_HOME/data
from your new Artifactory installation before doing so.
usage: import [import from path] ...
Valid options:
--ssl: Activate https instead of http. Default is false
--server [the server host or ip]: The remote Artifactory server IP or
host name with optional port number. The default is localhost:8081
--timeout [timeout in seconds]: Set the timeout of the HTTP connection.
--url [root url to rest api]: The root URL of the Artifactry REST API.
The default is http://[servername]/artifactory/api
--username [username]: Optional username to use when connecting to the
remote Artifactory
--password [password]: The users's clear text password
--noMetadata: Exclude metadata information when importing/exporting
--symlinks: Use symbolic links to the original import path file (no file
copying)
--syncImport: Import directly into Artifactory without using the
background import process
--verbose: display maximum details
--failFast: fail at first error
--failIfEmpty: fail at empty directories
artadmin command line usage:
Usage: artadmin <command> [arg] [options]
Type 'artadmin help <command>' for help on a specific command.
Available commands:
help: The help message
info: Get system information
export: Export artifactory data to destination path
import: Import full system from import path
dump: Dump the database of an older version of Artifactory
compress: Compress the database tables (Derby only) in order to free up
disk space.
1.3.0-beta-6
Artifactory 1.3.0-beta-6
We are pleased to announce the availability of Artifactory 1.3.0-beta-6.
Major Features and Changes in this Release
Artifactory is now fully configurable via the newly designed user interface!
Options for the import process
When used with the option, the import process can perform much faster (usually by a factor of 3-5). Note that --symlinks
when using this option your imported path effectively becomes an integral part of Artifactory and you should not move/remove
it until the background import process has completed. This is indicated by the log message: Working copy commit done
(0 files).
When using external database (like MySql) it is recommended to deactivate the working copy mechanism. To do this, use the
. --syncImport
Support for running Artifactory with for greater scalability, performance and tools support. MySql
Support for running Artifactory under . Websphere
Install script for automatic set up under a dedicated instance. Tomcat
Ability to remove deployed versions with all their sub-artifacts in one go.
Dynamic log tailing from the UI.
Global offline flag for disconnected environments.
Out of the box support for running standalone Artifactory as a (in additional to the existing Unix service installer). Windows service
Unified CLI tool for all administrative tasks. artadmin
Greatly improved backup and restore speed.
Many internal performance and concurrency improvements.
The usual bug fixes.
Major Features and Changes in release 1.3.0-beta-5
In place incremental backup.
Performance improvements around security authentication and authorization.
Fixed a UI bug with remote repositories cache access control setup.
Major Features and Changes in release 1.3.0-beta-4
Improved - support for multiple DNs, for non-anonymous binding against MS Active Directory and for sub-tree searches. LDAP Support
Fixed a critical issue with deployment using the lightweight HTTP wagon (RTFACT-629).
UI and performance improvements and the usual bug fixes.
Major Features and Changes in release 1.3.0-beta-3
Group support with an intuitive powerful UI for groups management.
Improved permissions control for including/excluding specific repository paths (e.g. disallow certain users/groups from downloading
sources). Simple management - no regexp gurus required.
Support for delete permission and for preventing users from overriding exiting artifacts.
Revised repository tree browsing using tabs and effective permissions per item view.
Improved import speed by committing binary imports asynchronously.
Improved procedure. #upgrade
Better transaction management using Spring Modules for JCR.
Even faster in-place incremental backup.
Low-level admin-only direct WebDAV access to the underlying jackrabbit repository (use: to http://localhost:8081/artifactory/jcr/default/
connect).
The usual bug fixes, stability and speed improvements.
The complete release notes from Jira are available here:
1.3.0-beta-6
1.3.0-beta-5
1.3.0-beta-4
1.3.0-beta-3
Artifactory 1.3.0-beta-6 is available for immediate download . here
Enjoy
The Artifactory Team
Important Notes Before You Install
Artifactory is available for immediate download from . here
1.
2.
a.
b.
3.
4.
5.
1.
2.
3.
4.
1.
2.
3.
4.
5.
6.
7.
a.
b.
a.
b.
c.
8.
If you are running Artifactory under JDK 1.6 you MUST use and above due to incompatibilities with older JAXB versions JDK 1.6u4
embedded in previous JDK 1.6 releases. JDK 1.5 users are not affected by this.
If you have used a previous version of Artifactory it is highly recommended to:
Use a fresh version of Artifactory from the distribution and not try to patch the previous installation.
Clear your browser's cache before using this version.
The default Artifactory user for the standalone installation has been changed to (instead of ). You might have to artifactory jetty
update the provided install script or your file system permissions accordingly.
Artifactory now includes a convenience method for specifying system properties. Instead of having to configure properties in the runtime
configuration of the hosting container, you can now edit the file and restart $ARTIFACTORY_HOME/etc/artifactory.properties
the container. As this affects the whole container VM it is recommended to use this feature for specifying Artifactory related properties
only (such as repository ids substitution, etc.).
Please note that not all documentation has been updated yet to reflect the latest changes in this beta release.
Below is important information that will make it into the final Artifactory 1.3.0 documentation.
Installing
Please refer to the section of the current user guide, which still applies. Installing
Upgrading from 1.2.2-rc0 through 1.3.0-beta-5
To upgrade from older versions you first need to dump the data from you old Artifactory into a 1.3 compatible format and then import it to the new
Artifactory.
We expect that with 1.3.0 and above upgrading can be done directly on an existing repository without the need to export it first.
Dumping the old version
Since Artifactory 1.3.0-beta-5, JFrog merged the tool with the main CLI administration tool: - creating the CLI " " artdump artadmin dump
command.
The tool can be found inside the archive, downloadable from . artadmin bin artifactory-cli-1.3.x.zip here
Important Information for Running the Dump
By default, cached repositories (e.g. repo1) are . To export cached repositories pass the parameter. not exported --caches
You should shut down the old Artifactory before executing the export.
It is recommended to work on a copy of the old folder (even though the export should be a read only process). $ARTIFACTORY_HOME
If you do not specify a destination folder with option, the dump command will create a folder under the current --dest tmpExport
execution directory, where it will export all the data from your old Artifactory.
Step by Step Instructions
Here are step by step instructions for running the full upgrade process:
Stop the old Artifactory.
Optional: Copy the folder to a new location. $ARTIFACTORY_HOME
If you created a copy and wish the old Artifactory to keep serving requests while performing the export, you can start it now.
Execute the command on the old or on a copy of it, by running dump #artadmin $ARTIFACTORY_HOME artadmin dump
(This will generate a folder if you did not specify a destination folder with option). $ARTIFACTORY_HOME tmpExport --dest
Perform a new clean server installation of Artifactory 1.3. It should not contain repository data or your customized version of the
Artifactory configuration xml file.
Start Artifactory 1.3. Note: If in step 3 you chose to restart your old Artifactory and you installed the Artifactory 1.3 on the same machine,
you will need to alter the listening port number inside . It is also highly recommended to use a $ARTIFACTORY_HOME/etc/jetty.xml
different port in order to perform the upgrade on a "silent" instance that is not being hit by user requests in parallel.
The import can be done in 2 ways:
Import with the command line (highly recommended): artadmin
Execute artadmin import tmpExport --username username --password password.
The output will display the progress of the import. NOTE: If the process is killed, the import will artadmin artadmin
still run in Artifactory.
Import via the Web UI:
Logon with admin/password credentials, click the "Admin" tab and choose "System" from the "Import & Export"
sub-menu on the left.
Enter the export directory into the "System zip file or directory" field in the "Import System" field-set and click the
"Import" button.
The import will run and may take some time to complete (depending on the size of your database).
Once the import process completes successfully you can switch to using Artifactory 1.3. You can go back to use the old port number (if
you changed it in step 6).
Please read this carefully before installing or upgrading:
8.
artadmin dump command line usage:
usage: dump [Artifactory home folder] ...
Artifactory will try to automcatically determine the previous version from
$ARTIFACTORY_HOME/webapps/artifactory.war if present.
If the war file cannot be found at this location, please do one of the
following:
1) link or copy it at this location, or pass the version.
2) pass one of the following version as second parameter:
1.2.2-rc0 1.2.2-rc1 1.2.2-rc2 1.2.2 1.2.5-rc0
1.2.5-rc1 1.2.5-rc2 1.2.5-rc3 1.2.5-rc4 1.2.5-rc5
1.2.5-rc6 1.2.5 1.2.5u1 1.3.0-beta-1 1.3.0-beta-2
1.3.0-beta-3 1.3.0-beta-4 1.3.0-beta-5
Valid options:
--dest [destination folder]: the destination folder for the new export
files. Default value: tmpExport
--version [version name]: the actual version of the old Artifactory if
the Update Manager cannot find it
--caches: include cached repositories in the export (by default caches
are not exported). If repo option is passed this option will be ignored
--security: only export the security file from DB, and set the norepo
flag
--repo [repo names separated by ':']: export only a specified list of
repositories. Default value: all-non-cached
--norepo: does not export the repositories, just convert config and
security
--convert: activate the Local and Virtual repository names conversion
--noconvert: does not activate the Local and Virtual repository names
conversion during a full export
artadmin import command line usage:
Important information about the import process
During the import binary artifacts are copied over into a working copy and are imported into Arifactory in by a background
thread. This speeds up the import process dramatically and makes Artifactory ready for serving requests as soon as possible.
The background import process will take some time to completes, depending on the size of your repository. During this time
Artifactory might perform more slowly than usual, but it will still serve any artifact immediately. The log does provide visible
information about the progress of this process.
Repeating the upgrade process
Should you wish to repeat the upgrade process from scratch, make sure to remove the folder $ARTIFACTORY_HOME/data
from your new Artifactory installation before doing so.
usage: import [import from path] ...
Valid options:
--ssl: Activate https instead of http. Default is false
--server [the server host or ip]: The remote Artifactory server IP or
host name with optional port number. The default is localhost:8081
--timeout [timeout in seconds]: Set the timeout of the HTTP connection.
--url [root url to rest api]: The root URL of the Artifactry REST API.
The default is http://[servername]/artifactory/api
--username [username]: Optional username to use when connecting to the
remote Artifactory
--password [password]: The users's clear text password
--noMetadata: Exclude metadata information when importing/exporting
--symlinks: Use symbolic links to the original import path file (no file
copying)
--syncImport: Import directly into Artifactory without using the
background import process
--verbose: display maximum details
--failFast: fail at first error
--failIfEmpty: fail at empty directories
artadmin command line usage:
Usage: artadmin <command> [arg] [options]
Type 'artadmin help <command>' for help on a specific command.
Available commands:
help: The help message
info: Get system information
export: Export artifactory data to destination path
import: Import full system from import path
dump: Dump the database of an older version of Artifactory
compress: Compress the database tables in order to free up disk space.
1.3.0-beta-5
Artifactory 1.3.0-beta-5
We are pleased to announce the availability of Artifactory 1.3.0-beta-5.
Major Features and Changes in this Release
In place incremental backup.
Performance improvements around security authentication and authorization.
Fixed a UI bug with remote repositories cache access control setup.
Options for the import process
When used with the option, the import process can perform much faster (usually by a factor of 3-5). Note that --symlinks
when using this option your imported path effectively becomes an integral part of Artifactory and you should not move/remove
it until the background import process has completed. This is indicated by the log message: Working copy commit done
(0 files).
When using external database (like MySql) it is recommended to deactivate the working copy mechanism. To do this, use the
. --syncImport
1.
2.
3.
4.
5.
6.
Major Features and Changes in release 1.3.0-beta-4
Improved - support for multiple DNs, for non-anonymous binding against MS Active Directory and for sub-tree searches. #LDAP Support
Fixed a critical issue with deployment using the lightweight HTTP wagon (RTFACT-629).
UI and performance improvements and the usual bug fixes.
Major Features and Changes in release 1.3.0-beta-3
Group support with an intuitive powerful UI for groups management (see: ).
Improved permissions control for including/excluding specific repository paths (e.g. disallow certain users/groups from downloading
sources). Simple management - no regexp gurus required (see: ).
Support for delete permission and for preventing users from overriding exiting artifacts.
Revised repository tree browsing using tabs and effective permissions per item view (see: ).
Improved import speed by committing binary imports asynchronously.
Improved procedure. #upgrade
Better transaction management using Spring Modules for JCR.
Even faster in-place incremental backup.
Low-level admin-only direct webdav access to the underlying jackrabbit repository (use: to http://localhost:8081/artifactory/jcr/default/
connect).
The usual bug fixes, stability and speed improvements.
The complete release notes from Jira are available here:
1.3.0-beta-5
1.3.0-beta-4
1.3.0-beta-3
Artifactory 1.3.0-beta-5 is available for immediate download . here
Enjoy
The Artifactory Team
Important Notes Before You Install
Please read carefully before installing or upgrading:
If you are running Artifactory under JDK 1.6 you MUST use and above due to incompatibilities with older JAXB versions JDK 1.6u4
embedded in previous JDK 1.6 releases. JDK 1.5 users are not affected by this.
If you have used a previous version of Artifactory it is recommended to clear your browser's cache before using this version.
To use the new incremental backup feature, specify under the backup <retentionPeriodHours>0</retentionPeriodHours>
configuration. This will cause backups to be written into a permanent " " directory in a format that can be used by any current
incremental file-system based backup utility (such as rsync).
The M2Eclipse indexing service runs by default on all repositories every round hour. The run interval can be controlled via the artifac
file, and repositories can be excluded from being indexed (similar to the configuration of the backup service). tory.config.xml
Artifactory now includes a convenience method for specifying system properties. Instead of having to configure properties in the runtime
configuration of the hosting container, you can now edit the file and restart $ARTIFACTORY_HOME/etc/artifactory.properties
the container. As this affects the whole container VM it is recommended to use this feature for specifying Artifactory related properties
only (such as repository ids substitution, etc.).
Please note that not all documentation has been updated yet to reflect the latest changes in this beta release.
Below is important information that will make its way into the final Artifactory 1.3.0 documentation.
Installing
Please refer to the section of the current user guide, which still applies. Installing
LDAP Support
General
Besides its own users database, Artifactory also supports authenticating users against an LDAP server.
If LDAP is configured in Artifactory configuration file, Artifactory will first attempt to authenticate the user against the LDAP server. If the LDAP
authentication fails, Artifactory will try to authenticate via the internal database.
For every LDAP authenticated user Artifactory creates new user in the internal database if that user doesn't exist.
Configuration
LDAP Configuration is placed under the security tag in artifactory.config.xml. For example:
<security>
<anonAccessEnabled>false</anonAccessEnabled>
<ldapSettings>
<ldapUrl>ldap://127.0.0.1:389/dc=jfrog,dc=org</ldapUrl>
<authenticationPatterns>
<!-- Use the 'direct' method -->
<authenticationPattern>
<userDnPattern>uid={0},ou=People</userDnPattern>
</authenticationPattern>
<!-- OR, using the 'search' method -->
<authenticationPattern>
<searchFilter>sAMAccountName={0}</searchFilter>
<searchSubTree>true</searchSubTree>
</authenticationPattern>
</authenticationPatterns>
<managerDn>cn=ReadOnlyUser,ou=People,dc=jfrog,dc=org</managerDn>
<managerPassword>password</managerPassword>
</ldapSettings>
</security>
Where:
ldapUrl - Location of the ldap server in the form of: ldap://myserver:myport/dc=sampledomain,dc=com. It should include the base DN for
searching and/or authenticating users.
authenticationPatterns - A list of user DN patterns or search criteria used to find an authenticated user. Each authentication pattern
element will be tried until a user is found and authenticated. If no user is found or authentication failed, a BadCredentials exception will
be thrown.
authenticationPattern - An authentication pattern can include either a userDnPattern for "direct" authentication or searchFilter for user
"search" (after binding with a manager DN) and then authentication of the found user. The and are not managerDn managerPassword
used for "direct" DN authentication.
userDnPattern - A DN pattern that can used to directly login users to the LDAP database. This pattern is used for creating a DN string
for "direct" user authentication, where the pattern is relative to the base DN in the ldapUrl. The pattern argument {0} will be replace with
the username in runtime. This will work only if anonymous binding is allowed and a direct user DN can be used (which is not the default
case for Active Directory).
Example:
uid={0},ou=People
searchFilter - The filter expression used for searching a user. This is an LDAP search filter (as defined in 'RFC 2254' ) with faqs.org ietf
optional arguments. See the documentation for the method of for more search javax.naming.directory.DirContext
information. The search method will be called with as , a single containing the username, a searchBase name filterArg filterExpr
with this value and search affected by the value of . Authentication to LDAP will be done from the DN searchFilter cons searchSubTree
found.
Possible examples are:
}, for use with Active Directory, or sAMAccountName={0
}, for use with other LDAP servers. uid={0
searchBase - Context name to search in, relative to the base DN in the ldapUrl. This is parameter is optional.
searchSubTree - Flag to enable deep search through the sub tree of the ldapUrl + searchBase. True by default.
managerDn - Used only with "search" authentication method. It is the DN of the user who will bind to the LDAP server to perform the
search.
managerPassword - Used only with "search" authentication method. It is the password of the user who will bind to the LDAP server to
perform the search.
Upgrading from 1.3.0-beta-3 through 1.3.0-beta-4 to 1.3.0-beta-5
Shutdown Artifactory and replace the war. If you are on Tomcat make sure the remove the expanded folder as well. webapps/artifactory
Upgrading from 1.2.2-rc0 through 1.3.0-beta-2 to 1.3.0-beta-5
To upgrade from older versions you first need to dump the data from you old Artifactory into a 1.3 compatible format and then import it to the new
Artifactory.
1.
2.
3.
4.
1.
2.
3.
4.
5.
6.
7.
a.
b.
a.
b.
c.
8.
We expect that with 1.3.0 and above upgrading can be done directly on an exiting repository without the need to export it first.
Dumping the old version
Since Artifactory 1.3.0-beta-1, JFrog provides a command line tool: for dumping (previously: ). artdump artifactoryExport
The tool can be found inside the archive, downloadable from . artdump bin artifactory-update-1.3.x.zip here
Important Information for Running the Dump
By default cached repositories (e.g. repo1) are . To export cached repositories pass the parameter. not exported --caches
You should shut down the old Artifactory before executing the export.
It is recommended to work on a copy of the old folder (that, even though the export should be a read only $ARTIFACTORY_HOME
process).
Running the update creates a folder (if you did not specify a destination folder with option) under the current tmpExport --dest
execution directory, where it exports all data from your old Artifactory. This folder is next used to do a full system import to tmpExport
the new Artifactory.
Step by Step Instructions
Here are step by step instructions for running the full upgrade process:
Stop the old Artifactory.
Optional: Copy the folder to a new location. $ARTIFACTORY_HOME
If you created a copy and wish the old Artifactory to keep serving requests while performing the export, you can start it now.
Execute the on the old or on a copy of it, by running . This #artdump $ARTIFACTORY_HOME artdump --home $ARTIFACTORY_HOME
will generate a folder if you did not specify a destination folder with option. tmpExport --dest
Perform a new clean server installation of Artifactory 1.3. It should not contains repositories data or your specific Artifactory configuration
xml file.
Start Artifactory 1.3. Note: If in step 3 you chose to restart your old Artifactory and you installed the Artifactory 1.3 on the same machine,
you will need to alter the listening port number inside . It is also highly recommended to use a $ARTIFACTORY_HOME/etc/jetty.xml
different port in order to perform the upgrade on a "silent" instance that is not being hit by user requests in parallel.
The import can be done in 2 ways:
Import with the command line (highly recommended): artadmin
Execute . Please note that --username username --password password --import tmpExport #artadmin
the tool needs to be run with JDK 1.6. artadmin
The output will display the progress of the import. NOTE: If the process is killed the import will artadmin artadmin
still run in Artifactory.
Import via the Web UI:
Logon with admin/password and go to "Export & Import" page, then into the "Full System" panel.
Enter the export directory into the "System zip file or directory" field and click the "Import" button.
The import will run and may take some time to complete, depending on the size of your database.
Once the import process completes successfully you can switch to using Artifactory 1.3. You can switch back the port number if you did
so in step 6.
artdump command line usage:
Important information about the import process
During the import binary artifacts are copied over into a working copy and are imported into Arifactory in by a background
thread. This speeds up the import process dramatically and makes Artifactory ready for serving requests as soon as possible.
The background import process will take some time to completes, depending on the size of your repository. During this time
Artifactory might perform more slowly than usual, but it will still serve any artifact immediately. The log does provide visible
information about the progress of this process.
Repeating the upgrade process
Should you wish to repeat the upgrade process from scratch, make sure to remove the folder $ARTIFACTORY_HOME/data
from your new Artifactory installation before doing so.
artdump
--help : displays this usage message
--home [old Artifactory home] : mandatory - the home folder of the old
Artifactory
--dest [destination folder] : the destination folder for the new export
files. Default value: tmpExport
--version [version name] : the actual version of the old Artifactory if
the Update Manager cannot find it
--repo [repo names separated by ':'] : export only a specified list of
repositories. Default value: all-non-cached
--norepo : does not export the repositories, just convert config and
security
--convert : activate the Local and Virtual repository names conversion
--noconvert : does not activate the Local and Virtual repository names
conversion during a full export
--security : only export the security file from DB, and set the norepo
flag
--caches : include cached repositories in the export (by default caches
are not exported). If repo option is passed this option will be ignored
The parameter --home is mandatory.
The Artifactory version will be extracted from
${artifactory.home}/webapps/artifactory.war if present
If the war file is not located there, please do one of the following:
1) Link or copy it into this location, or -
2) Pass one of the following version identifiers as second parameter:
1.2.2-rc0 1.2.2-rc1 1.2.2-rc2 1.2.2 1.2.5-rc0
1.2.5-rc1 1.2.5-rc2 1.2.5-rc3 1.2.5-rc4 1.2.5-rc5
1.2.5-rc6 1.2.5 1.2.5u1 1.3.0-beta-1 1.3.0-beta-2
The parameter is the old folder (the old Artifactory should not be running). If that folder also contains a --home $ARTIFACTORY_HOME w
subfolder with the old Artifactory war file, the update manager will automatically determine the old version from it. If the update ebapps
manager cannot determine a valid version an error message will appear with a list of valid versions and you'd need to manually specify
the version of your old Artifactory as a second parameter to . artdump
artadmin command line usage:
artadmin
--info : Display general system information about Artifactory
--import [import from path] : Activate full system import from a
designated path
--export [export to path] : Activate full system export to path
--server [the server host or ip] : The remote Artifactory server IP or
host name with optional port number. The default is localhost:8081
--ssl : Activate https instead of http. Default is false
--timeout [timeout in seconds] : Set the timeout of the HTTP connection.
--url [root url to rest api] : The root URL of the Artifactry REST API.
The default is http://[servername]/artifactory/api
--username [username] : Optional username to use when connecting to the
remote Artifactory
--password [password] : The users's clear text password
--noMetadata : Exclude metadata information when importing/exporting
--symlinks : Use symbolic links to the original import path file (no file
copying)
--syncImport : Import directly into Artifactory without using the
background import process
--bypassFiltering : Avoid using exiting repository filtering rules during
the export process
--createArchive : Zip the resulting folder after the export (slow)
You need to specify one of the following parameters: --info, --import or
--export
When used with the option the import, process can perform much faster (usually by a factor of 3-5). Note that when using --symlinks
this option your imported path effectively becomes an integral part of Artifactory and you should not move/remove it until the background
import process has completed. This is indicated by the log message: Working copy commit done (0 files).
1.3.0-beta-4
Artifactory 1.3.0-beta-4
We are pleased to announce the availability of Artifactory 1.3.0-beta-4.
Major Features and Changes in this Release
Improved - support for multiple DNs, for non-anonymous binding against MS Active Directory and for sub-tree searches. #LDAP Support
Fixed a critical issue with deployment using the lightweight HTTP wagon (RTFACT-629).
UI and performance improvements and the usual bug fixes.
Major Features and Changes in release 1.3.0-beta-3
Group support with an intuitive powerful UI for groups management (see: ).
Improved permissions control for including/excluding specific repository paths (e.g. disallow certain users/groups from downloading
sources). Simple management - no regexp gurus required (see: ).
Support for delete permission and for preventing users from overriding exiting artifacts.
Revised repository tree browsing using tabs and effective permissions per item view (see: ).
Improved import speed by committing binary imports asynchronously.
Improved procedure. #upgrade
Better transaction management using Spring Modules for JCR.
Even faster in-place incremental backup.
Low-level admin-only direct webdav access to the underlying jackrabbit repository (use: to http://localhost:8081/artifactory/jcr/default/
connect).
The usual bug fixes, stability and speed improvements.
1.
2.
3.
4.
5.
6.
The complete release notes are available here: http://issues.jfrog.org/jira/browse/RTFACT/fixforversion/10270
Artifactory 1.3.0-beta-4 is available for immediate download . here
Enjoy
The Artifactory Team
Important Notes Before You Install
Please read carefully before installing or upgrading:
If you are running Artifactory under JDK 1.6 you MUST use and above due to incompatibilities with older JAXB versions JDK 1.6u4
embedded in previous JDK 1.6 releases. JDK 1.5 users are not affected by this.
If you have used a previous version of Artifactory it is recommended to clear your browser's cache before using this version.
To use the new incremental backup feature, specify under the backup <retentionPeriodHours>0</retentionPeriodHours>
configuration. This will cause backups to be written into a permanent " " directory in a format that can be used by any current
incremental file-system based backup utility (such as rsync).
The M2Eclipse indexing service runs by default on all repositories every round hour. The run interval can be controlled via the artifac
file, and repositories can be excluded from being indexed (similar to the configuration of the backup service). tory.config.xml
Artifactory now includes a convenience method for specifying system properties. Instead of having to configure properties in the runtime
configuration of the hosting container, you can now edit the file and restart $ARTIFACTORY_HOME/etc/artifactory.properties
the container. As this affects the whole container VM it is recommended to use this feature for specifying Artifactory related properties
only (such as repository ids substitution, etc.).
Please note that not all documentation has been updated yet to reflect the latest changes in this beta release.
Below is important information that will make its way into the final Artifactory 1.3.0 documentation.
Installing
Please refer to the section of the current user guide, which still applies. Installing
LDAP Support
General
Besides its own users database, Artifactory also supports authenticating users against an LDAP server.
If LDAP is configured in Artifactory configuration file, Artifactory will first attempt to authenticate the user against the LDAP server. If the LDAP
authentication fails, Artifactory will try to authenticate via the internal database.
For every LDAP authenticated user Artifactory creates new user in the internal database if that user doesn't exist.
Configuration
LDAP Configuration is placed under the security tag in artifactory.config.xml. For example:
<security>
<anonAccessEnabled>false</anonAccessEnabled>
<ldapSettings>
<ldapUrl>ldap://127.0.0.1:389/dc=jfrog,dc=org</ldapUrl>
<authenticationPatterns>
<!-- Use the 'direct' method -->
<authenticationPattern>
<userDnPattern>uid={0},ou=People</userDnPattern>
</authenticationPattern>
<!-- OR, using the 'search' method -->
<authenticationPattern>
<searchFilter>sAMAccountName={0}</searchFilter>
<searchSubTree>true</searchSubTree>
</authenticationPattern>
</authenticationPatterns>
<managerDn>cn=ReadOnlyUser,ou=People,dc=jfrog,dc=org</managerDn>
<managerPassword>password</managerPassword>
</ldapSettings>
</security>
Where:
ldapUrl - Location of the ldap server in the form of: ldap://myserver:myport/dc=sampledomain,dc=com. It should include the base DN for
searching and/or authenticating users.
authenticationPatterns - A list of user DN patterns or search criteria used to find an authenticated user. Each authentication pattern
element will be tried until a user is found and authenticated. If no user is found or authentication failed, a BadCredentials exception will
be thrown.
authenticationPattern - An authentication pattern can include either a userDnPattern for "direct" authentication or searchFilter for user
"search" (after binding with a manager DN) and then authentication of the found user. The and are not managerDn managerPassword
used for "direct" DN authentication.
userDnPattern - A DN pattern that can used to directly login users to the LDAP database. This pattern is used for creating a DN string
for "direct" user authentication, where the pattern is relative to the base DN in the ldapUrl. The pattern argument {0} will be replace with
the username in runtime. This will work only if anonymous binding is allowed and a direct user DN can be used (which is not the default
case for Active Directory).
Example:
uid={0},ou=People
searchFilter - The filter expression used for searching a user. This is an LDAP search filter (as defined in 'RFC 2254' ) with faqs.org ietf
optional arguments. See the documentation for the method of for more search javax.naming.directory.DirContext
information. The search method will be called with as , a single containing the username, a searchBase name filterArg filterExpr
with this value and search affected by the value of . Authentication to LDAP will be done from the DN searchFilter cons searchSubTree
found.
Possible examples are:
}, for use with Active Directory, or sAMAccountName={0
}, for use with other LDAP servers. uid={0
searchBase - Context name to search in, relative to the base DN in the ldapUrl. This is parameter is optional.
searchSubTree - Flag to enable deep search through the sub tree of the ldapUrl + searchBase. True by default.
managerDn - Used only with "search" authentication method. It is the DN of the user who will bind to the LDAP server to perform the
search.
managerPassword - Used only with "search" authentication method. It is the password of the user who will bind to the LDAP server to
perform the search.
Upgrading from 1.3.0-beta-3 to 1.3.0-beta-4
Shutdown Artifactory and replace the war. If you are on Tomcat make sure the remove the expanded folder as well. webapps/artifactory
Upgrading from 1.2.2-rc0 through 1.3.0-beta-2 to 1.3.0-beta-4
To upgrade from older versions you first need to dump the data from you old Artifactory into a 1.3 compatible format and then import it to the new
Artifactory.
We expect that with 1.3.0 and above upgrading can be done directly on an exiting repository without the need to export it first.
1.
2.
3.
4.
1.
2.
3.
4.
5.
6.
7.
a.
b.
a.
b.
c.
8.
Dumping the old version
Since Artifactory 1.3.0-beta-1, JFrog provides a command line tool: for dumping (previously: ). artdump artifactoryExport
The tool can be found inside the archive, downloadable from . artdump bin artifactory-update-1.3.x.zip here
Important Information for Running the Dump
By default cached repositories (e.g. repo1) are . To export cached repositories pass the parameter. not exported --caches
You should shut down the old Artifactory before executing the export.
It is recommended to work on a copy of the old folder (that, even though the export should be a read only $ARTIFACTORY_HOME
process).
Running the update creates a folder (if you did not specify a destination folder with option) under the current tmpExport --dest
execution directory, where it exports all data from your old Artifactory. This folder is next used to do a full system import to tmpExport
the new Artifactory.
Step by Step Instructions
Here are step by step instructions for running the full upgrade process:
Stop the old Artifactory.
Optional: Copy the folder to a new location. $ARTIFACTORY_HOME
If you created a copy and wish the old Artifactory to keep serving requests while performing the export, you can start it now.
Execute the on the old or on a copy of it, by running . This #artdump $ARTIFACTORY_HOME artdump --home $ARTIFACTORY_HOME
will generate a folder if you did not specify a destination folder with option. tmpExport --dest
Perform a new clean server installation of Artifactory 1.3. It should not contains repositories data or your specific Artifactory configuration
xml file.
Start Artifactory 1.3. Note: If in step 3 you chose to restart your old Artifactory and you installed the Artifactory 1.3 on the same machine,
you will need to alter the listening port number inside . It is also highly recommended to use a $ARTIFACTORY_HOME/etc/jetty.xml
different port in order to perform the upgrade on a "silent" instance that is not being hit by user requests in parallel.
The import can be done in 2 ways:
Import with the command line (highly recommended): artadmin
Execute . Please note that --username username --password password --import tmpExport #artadmin
the tool needs to be run with JDK 1.6. artadmin
The output will display the progress of the import. NOTE: If the process is killed the import will artadmin artadmin
still run in Artifactory.
Import via the Web UI:
Logon with admin/password and go to "Export & Import" page, then into the "Full System" panel.
Enter the export directory into the "System zip file or directory" field and click the "Import" button.
The import will run and may take some time to complete, depending on the size of your database.
Once the import process completes successfully you can switch to using Artifactory 1.3. You can switch back the port number if you did
so in step 6.
artdump command line usage:
Important information about the import process
During the import binary artifacts are copied over into a working copy and are imported into Arifactory in by a background
thread. This speeds up the import process dramatically and makes Artifactory ready for serving requests as soon as possible.
The background import process will take some time to completes, depending on the size of your repository. During this time
Artifactory might perform more slowly than usual, but it will still serve any artifact immediately. The log does provide visible
information about the progress of this process.
Repeating the upgrade process
Should you wish to repeat the upgrade process from scratch, make sure to remove the folder $ARTIFACTORY_HOME/data
from your new Artifactory installation before doing so.
artdump
--help : displays this usage message
--home [old Artifactory home] : mandatory - the home folder of the old
Artifactory
--dest [destination folder] : the destination folder for the new export
files. Default value: tmpExport
--version [version name] : the actual version of the old Artifactory if
the Update Manager cannot find it
--repo [repo names separated by ':'] : export only a specified list of
repositories. Default value: all-non-cached
--norepo : does not export the repositories, just convert config and
security
--convert : activate the Local and Virtual repository names conversion
--noconvert : does not activate the Local and Virtual repository names
conversion during a full export
--security : only export the security file from DB, and set the norepo
flag
--caches : include cached repositories in the export (by default caches
are not exported). If repo option is passed this option will be ignored
The parameter --home is mandatory.
The Artifactory version will be extracted from
${artifactory.home}/webapps/artifactory.war if present
If the war file is not located there, please do one of the following:
1) Link or copy it into this location, or -
2) Pass one of the following version identifiers as second parameter:
1.2.2-rc0 1.2.2-rc1 1.2.2-rc2 1.2.2 1.2.5-rc0
1.2.5-rc1 1.2.5-rc2 1.2.5-rc3 1.2.5-rc4 1.2.5-rc5
1.2.5-rc6 1.2.5 1.2.5u1 1.3.0-beta-1 1.3.0-beta-2
The parameter is the old folder (the old Artifactory should not be running). If that folder also contains a --home $ARTIFACTORY_HOME w
subfolder with the old Artifactory war file, the update manager will automatically determine the old version from it. If the update ebapps
manager cannot determine a valid version an error message will appear with a list of valid versions and you'd need to manually specify
the version of your old Artifactory as a second parameter to . artdump
artadmin command line usage:
artadmin
--info : Display general system information about Artifactory
--import [import from path] : Activate full system import from a
designated path
--export [export to path] : Activate full system export to path
--server [the server host or ip] : The remote Artifactory server IP or
host name with optional port number. The default is localhost:8081
--ssl : Activate https instead of http. Default is false
--timeout [timeout in seconds] : Set the timeout of the HTTP connection.
--url [root url to rest api] : The root URL of the Artifactry REST API.
The default is http://[servername]/artifactory/api
--username [username] : Optional username to use when connecting to the
remote Artifactory
--password [password] : The users's clear text password
--noMetadata : Exclude metadata information when importing/exporting
--symlinks : Use symbolic links to the original import path file (no file
copying)
--syncImport : Import directly into Artifactory without using the
background import process
--bypassFiltering : Avoid using exiting repository filtering rules during
the export process
--createArchive : Zip the resulting folder after the export (slow)
You need to specify one of the following parameters: --info, --import or
--export
When used with the option the import, process can perform much faster (usually by a factor of 3-5). Note that when using --symlinks
this option your imported path effectively becomes an integral part of Artifactory and you should not move/remove it until the background
import process has completed. This is indicated by the log message: Working copy commit done (0 files).
1.3.0-beta-3
Artifactory 1.3.0-beta-3
We are pleased to announce the availability of Artifactory 1.3.0-beta-3.
Major Features and Changes in this Release
#LDAP Support!
Group support with an intuitive powerful UI for groups management (see: ).
Improved permissions control for including/excluding specific repository paths (e.g. disallow certain users/groups from downloading
sources). Simple management - no regexp gurus required (see: ).
Support for delete permission and for preventing users from overriding exiting artifacts.
Revised repository tree browsing using tabs and effective permissions per item view (see: ).
Improved import speed by committing binary imports asynchronously.
Improved procedure. #upgrade
Better transaction management using Spring Modules for JCR.
Even faster in-place incremental backup.
Low-level admin-only direct webdav access to the underlying jackrabbit repository (use: to http://localhost:8081/artifactory/jcr/default/
connect).
The usual bug fixes, stability and speed improvements.
The complete release notes are available here: http://issues.jfrog.org/jira/browse/RTFACT/fixforversion/10250
Artifactory 1.3.0-beta-3 is available for immediate download . here
Enjoy
1.
2.
3.
4.
5.
6.
The Artifactory Team
Important Notes Before You Install
Please read carefully before installing or upgrading:
If you are running Artifactory under JDK 1.6 you MUST use and above due to incompatibilities with older JAXB versions JDK 1.6u4
embedded in previous JDK 1.6 releases. JDK 1.5 users are not affected by this.
If you have used a previous version of Artifactory it is recommended to clear your browser's cache before using this version.
To use the new incremental backup feature, specify under the backup <retentionPeriodHours>0</retentionPeriodHours>
configuration. This will cause backups to be written into a permanent " " directory in a format that can be used by any current
incremental file-system based backup utility (such as rsync).
The M2Eclipse indexing service runs by default on all repositories every round hour. The run interval can be controlled via the artifac
file, and repositories can be excluded from being indexed (similar to the configuration of the backup service). tory.config.xml
Artifactory now includes a convenience method for specifying system properties. Instead of having to configure properties in the runtime
configuration of the hosting container, you can now edit the file and restart $ARTIFACTORY_HOME/etc/artifactory.properties
the container. As this affects the whole container VM it is recommended to use this feature for specifying Artifactory related properties
only (such as repository ids substitution, etc.).
Please note that not all documentation has been updated yet to reflect the latest changes in this beta release.
Below is important information that will make its way into the final Artifactory 1.3.0 documentation.
Installing
Please refer to the section of the current user guide, which still applies. Installing
LDAP Support
General
Besides its own users database, Artifactory also supports authenticating users against an LDAP server.
If LDAP is configured in Artifactory configuration file, Artifactory will first attempt to authenticate the user against the LDAP server. If the LDAP
authentication fails, Artifactory will try to authenticate via the internal database.
For every LDAP authenticated user Artifactory creates new user in the internal database if that user doesn't exist.
Configuration
LDAP Configuration is placed under the security tag in artifactory.config.xml. For example:
1.3.0-beta-3 has a bug that prevents deployment using the simple HTTP wagon when anonymous repository access is on. This bug is
fixed in 1.3.0-beta-4 ( ), and with beta-3 the workaround is to use the dav wagon for http://issues.jfrog.org/jira/browse/RTFACT-629
deployment, which is a simple change of the URL prefix ( ): dav:http:
<distributionManagement>
<repository>
<id>repo-id</id>
<url>dav:http://localhost:8081/artifactory/libs-releases-local</url>
</repository>
</distributionManagement>
1.
2.
3.
4.
1.
2.
3.
4.
5.
6.
7.
a.
b.
a.
b.
c.
8.
<security>
<ldapSettings>
<ldapUrl>ldap://127.0.0.1:389/dc=jfrog,dc=org</ldapUrl>
<userDnPattern>uid={0}, ou=People</userDnPattern>
<managerDn></managerDn>
<managerPassword></managerPassword>
</ldapSettings>
</security>
Where:
ldapUrl - Url or the ldap server including the base DN to start searching for users.
userDnPattern - The pattern, relative to the base DN in the ldapUrl, which will be used to search for the user. The pattern argument {0}
will contain the username.
managerDn - User name to logon the ldap server if it requires authentication to search for users
managerPassword - Password to logon the ldap server if it requires authentication to search for users
Upgrading (from 1.2.2-rc0 through 1.3.0-beta-2) to 1.3.0-beta-3
To upgrade from older versions you first need to dump the data from you old Artifactory into a 1.3 compatible format and then import it to the new
Artifactory.
We expect that with 1.3.0 and above upgrading can be done directly on an exiting repository without the need to export it first.
Dumping the old version
Since Artifactory 1.3.0-beta-1, JFrog provides a command line tool: for dumping (previously: ). artdump artifactoryExport
The tool can be found inside the archive, downloadable from . artdump bin artifactory-update-1.3.x.zip here
Important Information for Running the Dump
By default cached repositories (e.g. repo1) are . To export cached repositories pass the parameter. not exported --caches
You should shut down the old Artifactory before executing the export.
It is recommended to work on a copy of the old folder (that, even though the export should be a read only $ARTIFACTORY_HOME
process).
Running the update creates a folder (if you did not specify a destination folder with option) under the current tmpExport --dest
execution directory, where it exports all data from your old Artifactory. This folder is next used to do a full system import to tmpExport
the new Artifactory.
Step by Step Instructions
Here are step by step instructions for running the full upgrade process:
Stop the old Artifactory.
Optional: Copy the folder to a new location. $ARTIFACTORY_HOME
If you created a copy and wish the old Artifactory to keep serving requests while performing the export, you can start it now.
Execute the on the old or on a copy of it, by running . This #artdump $ARTIFACTORY_HOME artdump --home $ARTIFACTORY_HOME
will generate a folder if you did not specify a destination folder with option. tmpExport --dest
Perform a new clean server installation of Artifactory 1.3. It should not contains repositories data or your specific Artifactory configuration
xml file.
Start Artifactory 1.3. Note: If in step 3 you chose to restart your old Artifactory and you installed the Artifactory 1.3 on the same machine,
you will need to alter the listening port number inside . It is also highly recommended to use a $ARTIFACTORY_HOME/etc/jetty.xml
different port in order to perform the upgrade on a "silent" instance that is not being hit by user requests in parallel.
The import can be done in 2 ways:
Import with the command line (highly recommended): artadmin
Execute . Please note that --username username --password password --import tmpExport #artadmin
the tool needs to be run with JDK 1.6. artadmin
The output will display the progress of the import. NOTE: If the process is killed the import will artadmin artadmin
still run in Artifactory.
Import via the Web UI:
Logon with admin/password and go to "Export & Import" page, then into the "Full System" panel.
Enter the export directory into the "System zip file or directory" field and click the "Import" button.
The import will run and may take some time to complete, depending on the size of your database.
Once the import process completes successfully you can switch to using Artifactory 1.3. You can switch back the port number if you did
so in step 6.
artdump command line usage:
artdump.sh
--help : displays this usage message
--home [old Artifactory home] : mandatory - the home folder of the old
Artifactory
--dest [destination folder] : the destination folder for the new export
files. Default value: tmpExport
--version [version name] : the actual version of the old Artifactory if
the Update Manager cannot find it
--repo [repo names separated by ':'] : export only a specified list of
repositories. Default value: all-non-cached
--norepo : does not export the repositories, just convert config and
security
--convert : activate the Local and Virtual repository names conversion
--noconvert : does not activate the Local and Virtual repository names
conversion during a full export
--security : only export the security file from DB, and set the norepo
flag
--caches : include cached repositories in the export (by default caches
are not exported). If repo option is passed this option will be ignored
The parameter --home is mandatory.
The Artifactory version will be extracted from
${artifactory.home}/webapps/artifactory.war if present
If the war file is not located there, please do:
1) link or copy it at this location, or pass the version.
2) pass one of the following version as second parameter:
1.2.2-rc0 1.2.2-rc1 1.2.2-rc2 1.2.2 1.2.5-rc0
1.2.5-rc1 1.2.5-rc2 1.2.5-rc3 1.2.5-rc4 1.2.5-rc5
1.2.5-rc6 1.2.5 1.2.5u1 1.3.0-beta-1 1.3.0-beta-2
The parameter is the old folder (the old Artifactory should not be running). If that folder also contains a --home $ARTIFACTORY_HOME
webapps subfolder with the old Artifactory war file, the update manager will automatically determine the old version from it. If the update
manager cannot determine a valid version an error message will appear with a list of valid versions and you'd need to manually specify
the version of your old Artifactory as a second parameter to . artdump
artadmin command line usage:
Important information about the import process
During the import binary artifacts are copied over into a working copy and are imported into Arifactory in by a background thread. This
speeds up the import process dramatically and makes Artifactory ready for serving requests as soon as possible. The background
import process will take some time to completes, depending on the size of your repository. During this time Artifactory might perform
more slowly than usual, but it will still serve any artifact immediately. The log does provide visible information about the progress of this
process.
Repeating the upgrade process
Should you wish to repeat the upgrade process from scratch, make sure to remove the folder from your $ARTIFACTORY_HOME/data
new Artifactory installation before doing so.
artadmin
--info : Display general system information about Artifactory
--import [import from path] : Activate full system import from a
designated path
--export [export to path] : Activate full system export to path
--server [the server host or ip] : The remote Artifactory server IP or
host name with optional port number. The default is localhost:8081
--ssl : Activate https instead of http. Default is false
--timeout [timeout in seconds] : Set the timeout of the HTTP connection.
--url [root url to rest api] : The root URL of the Artifactry REST API.
The default is http://[servername]/artifactory/api
--username [username] : Optional username to use when connecting to the
remote Artifactory
--password [password] : The users's clear text password
--noMetadata : Exclude metadata information when importing/exporting
--symlinks : Use symbolic links to the original import path file (no file
copying)
--syncImport : Import directly into Artifactory without using the
background import process
--bypassFiltering : Avoid using exiting repository filtering rules during
the export process
--createArchive : Zip the resulting folder after the export (slow)
You need to specify one of the following command parameters: --info,
--import or --export
When used with the option the import, process can perform much faster (usually by a factor of 3-5). Note that when using --symlinks
this option your imported path effectively becomes an integral part of Artifactory and you should not move/remove it until the background
import process has completed. This is indicated by the log message: Working copy commit done (0 files).
Artifactory 2.1.1
We are pleased to announce the availability of Artifactory 2.1.1.
The major features and changes included in this release are:
General
New 'annotate' permission to control who can tag items with metadata
Support for copying artifacts between repositories
Servlet 2.4 compatibility restored (Artifactory can run again under Tomcat 5.5)
Fixed intermittent wrong content-length issues
Default proxy support (no need to manually assign a proxy for each remote repository)
Ability to run the datastore garbage collection manually (Admin:Advanced:Maintenance:Storage)
File system datastore for binaries now properly syncs changes to the search index
Add-ons
Watch events are now correctly emitted for move and copy operations
Properties can now be set on cached items
For a complete list of resolved issues in this version please see the . JIRA
Instructions for simple upgrade from previous versions can be found . here
The latest Artifactory user guide is available . here
Artifactory 2.1.1 is available for immediate download from or directly from . JFrog's web site SourceForge
Enjoy!
The Artifactory Team @ JFrog
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Artifactory 2.2.4
We are pleased to announce the availability of Artifactory 2.2.4!
This release contains important improvements to Artifactory OSS and the Artifactory Pro Power Pack, as well as important maintenance bug
fixes.
Notable improvements and changes in this version are:
Performance Improvements - Lower memory footprint, better overall memory management and better JVM and storage defaults for
the OOTB installation.
Folder & Repository Replication REST API - Rsync-like replication of a remote repository or remote repository folder between two
Artifactory servers. See: 'Folder Synchronization/Replication' under the (requires Artifactory Pro). REST API documentation
Build Promotion REST API - Promote (copy/move) a CI server build published artifacts with or without dependencies from selected
scopes - all via REST. See: 'Build Promotion' under the (requires Artifactory Pro). REST API documentation
Support for Multiple LDAP Servers - Configure authentication and/or group authorization against multiple LDAP instances (requires
Artifactory Pro).
Extended Support for CI server Build Integration - supports non-numeric build numbers and better link-back to Build info integration
the CI server.
Improved Code Highlighting - Better support for Gradle scripts and JavaFx code.
Better Support for Standalone Artifactory Behind Apache - Improved request handling when running Artifactory on standalone Jetty
behind Apache.
New System Info Page - For tracking and serving as a convenient source of information when reporting issues. system resources
Improved Backups - User-edited files such as artifactory system properties and the mime types are now also part of a system backup.
Bookmarkable Tree Browser - Artifact tree nodes are fully bookmarkable and can be shared as links (copy the link from the General
tab when a node is selected).
'Chroot' Support for UI Browsing - Ability to run Artifactory with a limiting browsing the server file system from 'chrooted' UI browsing
the UI (e.g. for import/export) to a specified root path.
Instructions for upgrading to 2.2.4 from previous versions can be found . here
For a complete list of resolved issues in this version please see the . JIRA
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.2.5
We are pleased to announce the availability of Artifactory 2.2.5!
This is a maintenance release for 2.2.4, containing bug fixes and small improvements.
Some changes in this version are:
Selective scopes (or 'configurations' for Ivy) when saving Build Info artifacts/dependencies as a search result (requires the Pro Power
Pack).
REST API now accepts 'application/json' as content-type from clients when the return type is a json object with a more concerete json
sub-type.
Fixed a security issue with blank LDAP passwords and SunOne LDAP server.
Support for manually clearing bad checksums from the UI.
Instructions for upgrading from previous versions can be found . here
For a complete list of resolved issues in this version please see the . JIRA
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.3.3
We are pleased to announce the availability of Artifactory 2.3.3!
Notable new features and changes in this version are:
Artifactory Pro Power Pack 2.2.4 Free Evaluation is available for immediate download.
The Artifactory OSS 2.2.4 is available from or directly from . JFrog's web site SourceForge
Artifactory 2.2.5 is available for immediate download from or directly from . JFrog's web site SourceForge
1.
2.
3.
4.
5.
6.
7.
8.
9.
1.
2.
3.
4.
5.
6.
7.
Repository Replication - Rsync-like mirroring of your repository content and metadata from/to remote Artifactory repositories using pull
and push (coming soon) replication (requires Artifactory Pro)
Release Staging and Promotion Support - Works in conjunction with the new release management features in the Jenkins Artifactory
plugin. Similar support is coming to TeamCity and Bamboo (some features require Artifactory Pro)
Filtered Resources - Provision dynamic settings and configuration resources to clients. For example, provision different content base
on the user originating IP address, or based on changing property values attached to the requested artifact (requires Artifactory Pro)
S3 Remote Browsing - Browse remote repositories hosted on Amazon S3
Isolated Resolution Support for Snapshot Build Chains - When running parallel integration build chains in Jenkins, Artifactory will
return for each builds only dependencies that were produced as part of its build chain. Similar support is coming to TeamCity and
Bamboo (requires Artifactory Pro)
SSO by any HTTP Header - The HTTP-SSO add-on now also supports authentication to Artifactory based on any trusted HTTP header
RPM Distribution - Artifactory can now be installed from an RPM on any RPM-supporting OS
Bad Jars Protection - Avoid filling up your repository with bad jars. For example, when running behind a captive portal
Many bug fixes and improvements
Instructions for upgrading to 2.3.3 from previous versions can be found . here
For a complete list of resolved issues in this version please see the . JIRA
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.3.4
We are pleased to announce the availability of Artifactory 2.3.4!
Notable new features and changes in this version are:
Push Repository Replication - Push repository replication completes the existing pull replication feature. You can now push content
and metadata to remote Artifactory repositories on servers you are only allowed to make outgoing connections to (requires Artifactory
Pro)
Jar Entry Download - Access and download archive content directly via HTTP GET. This enables, for example, reading javadocs
documents directly from their Artifactory hosted jars (requires Artifactory Pro)
Search API for Plugins - Groovy plugins can now perform searches in Artifactory (requires Artifactory Pro)
Improved REST API - Item effective permissions, find builds using a dependency, artifacts with bad checksums search, etc.
Test Remote Repository - Verify you can successfully connect to a remote repository you have created
Compatible with the features of the upcoming version of the and the Release Management TeamCity Artifactory Plug-in Bamboo
Artifactory Plug-in
Bug fixes and many small improvements
Instructions for upgrading to 2.3.4 from previous versions can be found . here
For a complete list of resolved issues in this version please see the . JIRA
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.3.4.1
We are pleased to announce the availability of Artifactory 2.3.4.1!
This version of Artifactory adds Java 7 compatibility to Artifactory!
Artifactory Pro 2.3.3 free trial is available for . immediate download
The Artifactory OSS 2.3.3 is available from or directly from . JFrog's web site SourceForge
Artifactory Pro 2.3.4 free trial is available for . immediate download
The Artifactory OSS 2.3.4 is available from or directly from . JFrog's web site SourceForge
Disabling HotSpot Loop Optimizations
Due to critical Hotspot bugs in the first Java 7 release(s) ( , & ), it is to run 7070134 7044738 7068051 HIGHLY RECOMMENDED
Artifactory with the following Hotspot flag in order to avoid JVM crashes and/or Lucene index corruption:
-XX:-UseLoopPredicate
Instructions for upgrading to 2.3.4.1 from previous versions can be found . here
Please Note: Due to a minor bug, the artifactory.log file may contain the following warning after upgrading Artifactory to 2.3.4.1. You can safely
ignore this warning.
[art-init] [WARN ] (o.a.v.ArtifactoryVersionReader:102) - Version 2.3.4.1 is not an
official release version. The closest revision to 13021 will be used to determine the
current version.
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.1.2
We are pleased to announce the availability of Artifactory 2.1.2.
Major features and changes in this release:
General
Initial Ivy support - Preview Ivy modules and Ivy dependency declaration, XPath search in ivy.xml files, auto-guess Ivy modules
properties when uploading ivy.xml files from the UI
Sharing of remote repository definitions - You can import and reuse remote repository definitions exposed by other Artifactory instances
(new Import button in ) Admin:Repositories:Remote Repositories
Optimized binaries storage - Including configurable blobs caching and support for storing binaries as regular files (instead of as database
blobs)
Browser compatibility fixes
Add-ons
Exporting search results - Saved search results can now be exported to disk
For a complete list of resolved issues in this version please see the . JIRA
Instructions for simple upgrade from previous versions can be found . here
The latest Artifactory user guide is available . here
Artifactory 2.1.2 is available for immediate download from or directly from . JFrog's web site SourceForge
Enjoy!
The Artifactory Team @ JFrog
Artifactory 2.1.3
We are pleased to announce the availability of Artifactory 2.1.3!
The major features and changes in this release are:
Hudson integration - Use the to deploy builds to Artifactory from Hudson together with build-time information: Hudson Artifactory Plugin
View builds in Artifactory with information about the deployed artifacts and dependencies (all scopes) and runtime environment per build,
and link back to Hudson to obtain fully-reproducible builds.
Via paid add-on: Visual artifact/dependency views per build; Promote or export all build artifacts and dependencies; See where specific
artifacts are used and receive warnings when required build dependencies are removed .
Automatic cleanup of remote repositories declared in POMs - A virtual repository can now be configured to auto- clean up rogue
remote repositories declared in POM files, causing dependency resolution issues.
Logo branding - Customize your Artifactory UI with your own logo (uploaded or URL linked) and footer
Ivy dependencies for POMs - Copy Ivy dependency declarations from the POM view.
Generic artifact deployment support - Improved upload screen with ability to deploy artifacts to any path without Maven's layout
Using this flag may not be necessary in future Java 7 releases.
Artifactory Pro 2.3.4.1 free trial is available for . immediate download
The Artifactory OSS 2.3.4.1 is available from or directly from . JFrog's web site SourceForge
1.
2.
3.
4.
5.
6.
1.
2.
constraints.
Include/exclude patterns on virtual repositories - This extra level of control supersedes the pattens define on sub-repositories.
Limit search to specific repositories
Faster searches
For a complete list of resolved issues in this version please see the . JIRA
Instructions for simple upgrade from previous versions can be found . here
The latest Artifactory user guide is available . here
Artifactory 2.1.3 is available for immediate download from or directly from . JFrog's web site SourceForge
Enjoy!
The Artifactory Team @ JFrog
Artifactory 2.2.0
We are pleased to announce the availability of Artifactory 2.2!
This forth major release of Artifactory is focused around significant performance improvements, resource usage optimizations, and bug fixes.
Please see important for this version. update notes
This release also brings a couple of new important features to Artifactory:
Open REST API - Artifactory's RESTful resources are now public and documented. Using the or the REST documentation
auto-generated WADL file, Artifactory can be controlled and automated from external tools or frameworks.
Enterprise-grade LDAP Groups Synchronization - this new lets you manage permissions in based on you Power Pack add-on
existing LDAP groups. It offers fast caching of LDAP data (which is a must for an organization with hundreds or thousands of users),
flexible group synchronization strategies, multiple settings, and tight integration and feedback about LDAP users and groups throughout
all security-related management screens in Artifactory.
Support for running Artifactory under . GlassFish 3
Support for of the same remote resource. queueing concurrent downloads
Ability to with administrative comments. annotate repositories
Improved . UI branding
The LDAP Groups add-on joins the existing set of commercial add-ons, that complete the Artifactory professional Artifactory Power Pack
offering. You might find the following helpful for comparing the open source version to the add-ons version. comparison table
Artifactory 2.2 is available for immediate download from or directly from . JFrog's web site SourceForge
Instructions for upgrading to 2.2 from previous versions can be found . here
For a complete list of resolved issues in this version please see the . JIRA
Enjoy Artifactory!
Artifactory 2.2.1
We are pleased to announce the availability of Artifactory 2.2.1!
This is a maintenance bug fixes release for 2.2.0.
Artifactory 2.2.1 is available for immediate download from or directly from . JFrog's web site SourceForge
Instructions for upgrading to 2.2.1 from previous versions can be found . here
For a complete list of resolved issues in this version please see the . JIRA
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.2.2
We are pleased to announce the availability of Artifactory 2.2.2!
This is a maintenance release for 2.2.1 that also adds a couple of new noticeable features to Artifactory:
Checksum Validation for Uploaded Artifacts - Local repositories can now be assigned with a custom policy for validating the
checksum of artifacts uploaded by client. You can tell Artifactory not to serve an artifact (return 404) until its checksum has been verified
against the client's checksum.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
1.
2.
3.
4.
5.
Queueing Concurrent Downloads of Same Remote Resource - Artifactory will avoid bursts of concurrent downloads requests for the
same remote resource and will queue all requests except the first one to avoid download overwriting, timeouts and bandwidth
exhausting.
Move/Copy via REST API - Allowing arbitrary move/copy automation between paths and repositories, including metadata move/copy
(requires the Artifactory Power Pack).
Trigger Download REST API - Automate a remote artifact download with or without getting the content back to the client (requires the
Artifactory Power Pack).
Property-based Download - Request an artifact for download based on the existence of certain property value on it, including support
for mandatory/non-mandatory values.
Metdata Proxying - Ability to proxy remote artifacts with their metadata.
System-wide Syntax Coloring Support - For XML, Java, Groovy files etc.
Jar/Zip Content Browsing - In tree-view you can drill down into Jars and view files, sources and the Manifest content.
View Java Source from Class - Ability to view the source of classes returned in search results or when browsing a Jar class that has a
matching sources Jar in Artifactory.
Better View of Dependent Build Artifacts - Faster and uses less memory (requires the Artifactory Power Pack).
Hide Repository in Tree Browse - For users with no read permissions on any path in the repository.
Instructions for upgrading to 2.2.2 from previous versions can be found . here
For a complete list of resolved issues in this version please see the . JIRA
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.2.3
We are pleased to announce the availability of Artifactory 2.2.3!
This is a maintenance release for 2.2.2, containing bug fixes and small improvements.
Notable changes in this version are:
Fixed a problem with trusted server checksums, leading to checksum errors.
Fixed a regression with Maven metadata not being merged correctly for virtual repositories.
Mime types are now configurable, allowing more file types to be viewed with syntax highlighting (requires index rebuilding).
Source of class files can be viewed not only when the sources jar is available but also when sources are contained within the same jar.
Instructions for upgrading to 2.2.3 from previous versions can be found . here
For a complete list of resolved issues in this version please see the . JIRA
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.3.0
We are pleased to announce the availability of Artifactory 2.3!
This release contains new features and improvements to Artifactory OSS and Artifactory Pro Power Pack, as well as important maintenance bug
fixes and performance improvements.
Notable new features in this version are:
License Control Add-on - A new Pro add-on that enables you to take full control over the licenses that are used by your third-party
dependencies, as part of your builds. You can get immediate notifications about any libraries that violate your organization's license
policy, so you can deal with licensing issues early on during development.
This add-on integrates with Maven, Gradle and Ivy builds using the latest version of the Artifactory plugins for: , Hudson JetBrains'
and . TeamCity Atlassian's Bamboo
Watch for a demo of License Control in action. this screencast
User Plugins - You can now extend Artifactory Pro with your own custom Groovy plugins. Using plugins you can schedule tasks, deploy
artifacts, change resolution rules and download content, tend to any storage events etc. Plugin source files are redeployed on the fly
during development, and can be edited and debugged in your favorite IDE.
Atlassian Crowd Integration - Delegate authentication request to a Crowd server and get transparent SSO in a Crowd-enabled SSO
environment (requires Pro).
Repository List Browsing - A new lightweight browsing mode that resembles simple directory listing used by web servers. List
browsing uses a unique URL prefix, which allows you to restrict public access only to it in a front-end web server.
Artifactory 2.2.2 is available for immediate download from or directly from . JFrog's web site SourceForge
Artifactory 2.2.3 is available for immediate download from or directly from . JFrog's web site SourceForge
5.
6.
7.
1.
2.
3.
4.
1.
2.
3.
4.
5.
6.
7.
8.
Repository Admin via REST - A new API that enables creating, updating and deleting all repository types via REST (requires Pro).
Automatic and Client Settings Gradle Ivy - Generate Ivy and Gradle setting for resolution and deployment directly from the UI (to
complete the Maven settings generator).
Tomcat 7 Compatibility - Artifactory is now compatible with Tomcat 7.
Instructions for upgrading to 2.3 from previous versions can be found . here
For a complete list of resolved issues in this version please see the . JIRA
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.3.1
We are pleased to announce the availability of Artifactory 2.3.1!
Notable features and changes in this version are:
License Control Improvements - Many improvements and small bug fixes mainly around third-party license violation notifications.
You will need to upgrade the to the latest version in order to take advantage of some of the Note: Artifactory plugin for your CI server
improvements (disabling scanning own artifacts, scope selection etc.).
Execute Plugin via REST - and extension point to execute any user code via REST. New REST API plugin
Richer access.log - More administrative actions and configuration changes are now reported in the file. access.log
Gzip-encoded response - Responses using gzip compression are now supported (typically returned by proxies not taking the Accept-
header into account). Encoding
Instructions for upgrading to 2.3.1 from previous versions can be found . here
For a complete list of resolved issues in this version please see the . JIRA
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.3.2
We are pleased to announce the availability of Artifactory 2.3.2!
Notable features and changes in this version are:
Remote Repository Browsing - Browse the content of remote folders, not yet cached locally. This also allows Ivy resolvers to take into
account remote versions when using version ranges.
Crowd Groups Integration - Sync your Atlassian Crowd groups to Artifactory and manage groups permissions on those groups
(requires Artifactory Pro).
Pluggable Authentication Realms - super-easy login integration with any external system using a new Groovy extension point in User
(requires Artifactory Pro). Plugins
Non-Maven Repository Layouts - Define the layout by which modules are identified in your repositories to achieve smart module
management in non-Maven repositories, including: automatic cleanup of integration artifacts, cross-repository layout conversion
(remote--local/cache--virtual), module metadata searches etc.
Robust WebDAV Mounts - Ability to mount any local repository or cache as a secure WebDAV share for direct browsing from your
native O/S file manager.
Automatic Cleanup of Old Builds - Use the retention defined by your CI server for cleaning up old builds, when using the Artifactory B
(requires Artifactory Pro). uild Integration
Improved Memory Consumption - Substantially improved memory utilization.
Over 90 bug fixes and improvements.
Instructions for upgrading to 2.3.2 from previous versions can be found . here
For a complete list of resolved issues in this version please see the . JIRA
Artifactory Pro 2.3 free trial is available for . immediate download
The Artifactory OSS 2.3 is available from or directly from . JFrog's web site SourceForge
Artifactory Pro 2.3.1 free trial is available for . immediate download
The Artifactory OSS 2.3.1 is available from or directly from . JFrog's web site SourceForge
Artifactory Pro 2.3.2 free trial is available for . immediate download
The Artifactory OSS 2.3.2 is available from or directly from . JFrog's web site SourceForge
1.
2.
3.
4.
5.
6.
7.
1.
2.
3.
1.
2.
3.
4.
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.4.0
We are pleased to announce the availability of Artifactory 2.4!
What's New in this Release
This major release of Artifactory introduces the following new features and changes:
YUM Repositories and RPM Provisioning - Artifactory can now act as a fully-featured YUM repository, including auto-updating repo
metadata and RPM detailed view directly from the Artifactory UI.
P2 Repositories - Artifactory can be your single access point for all Eclipse updates. Eclipse plugins proxying and hosting take
advantage of Artifactory's exiting advanced caching and security controls.
Major Performance Improvements - in storage management, CPU and memory utilization and search speeds
Security is Fully Manageable via REST API
User Regexp Tokens in Repository Layouts - You can now add your own custom regexp-based tokens to repository layout definitions
for better module identification.
New additions to the for (move, copy, search, not downloaded since, etc.) Artifactory Public API User Plugins
Usability improvements and many bug fixes
Before Upgrading - Important, Please Read This
Plan for an Upgrade Downtime - This major release involves storage-related changes, so while the upgrade process itself
automatically runs from start to finish (as always), it will take some time for it to complete.
The time between starting up Artifactory after upgrading and having it ready to serve requests can vary, depending of the size of your
repository, but it is compared to previous updates. considerably longer
. It is important that you run this upgrade while taking downtime into account
Java 6 is Required - Artifactory no longer runs on Java 5 and now requires Java 6. This enables us to improve the Artifactory codebase
and use up-to-date dependencies that require Java 6.
XML Search is Disabled by Default - XML context indexing (and thus, searching) incurs some performance overhead and has been
made optional.
If you'd like to keep using this feature you will need to opt-in and enable XML searches. It is important that you do this before upgrading
Artifactory, since newly created XMLs will not be indexed until XML indexing is enabled. Please see the details on how to do this on the
. XML Search page
Instructions for upgrading to 2.4 from previous versions can be found . here
For a complete list of resolved issues in this version please see the . JIRA
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.4.1
We are pleased to announce the availability of Artifactory 2.4.1!
This is a bug-fix minor release. Important issues addressed in this release are:
Non-unique snapshots are again updatable with 'deploy' permission (a regression caused 'delete' permission to be required)
Fixed potentially wrong checksums after upgrading to Artifactory 2.4.0
WebLogic 10.3 compatibility
Support for remote browsing of repositories that return a gzip-compressed response
Instructions for upgrading to 2.4.1 from previous versions can be found . here
Artifactory Pro 2.4 free trial is available for . immediate download
The Artifactory OSS 2.4 is available from or directly from . JFrog's web site SourceForge
Artifactory Pro 2.4.1 free trial is available for . immediate download
The Artifactory OSS 2.4.1 is available from or directly from . JFrog's web site SourceForge
Important! Before upgrading from 2.3.x or earlier
Please make sure to read the 'Before Upgrading' section in the for important information about Artifactory 2.4.0 release notes
upgrading from 2.3.x to 2.4.x.
1.
2.
3.
1.
2.
1.
2.
3.
4.
5.
For a complete list of resolved issues in this version please see the . JIRA
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.4.2
We are pleased to announce the availability of Artifactory 2.4.2!
Important issues addressed in this release are:
New REST API to allow tracking of replication status
Unlimited results for searches run from Artifactory plugins
Fixed a regression with Maven metadata expiry
For a complete list of resolved issues in this version please see the . JIRA
Instructions for upgrading to 2.4.2 from previous versions can be found . here
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.5.0
We are pleased to announce the availability of Artifactory 2.5. Now with NuGet Support!
Important issues addressed in this release are:
NuGet Support - Artifactory has across-the-board support for NuGet. This means that .Net developers can now use the full power of
Artifactory's advanced artifact management to host, proxy and aggregate NuGet packages (via local, remote and virtual repos,
respectively) and pull libraries from Artifactory into Visual Studio projects.
A slew of bug fixes and small improvements.
For a complete list of resolved issues in this version please see the . JIRA
Instructions for upgrading to 2.5 from previous versions can be found . here
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.5.1
We are pleased to announce the availability of Artifactory 2.5.1!
Important improvements and fixes included in this minor release are:
Maven indexer can now be triggered based on a cron expression
All zip-compatible archives can now be searched (previously was limited to jars)
New tab displaying NuGet package information (extracted from its embedded nuspec file)
Replication no longer aborts on failure to replicate a single artifact
Fixed empty response when list-browsing repositories with a short name
For a complete list of resolved issues in this version please see the . JIRA
Instructions for upgrading to 2.5.1 from previous versions can be found . here
Artifactory Pro 2.4.2 free trial is available for . immediate download
The Artifactory OSS 2.4.2 is available from or directly from . JFrog's web site SourceForge
Artifactory Pro 2.5 free trial is available for . immediate download
The Artifactory OSS 2.5 is available from or directly from . JFrog's web site SourceForge
Artifactory Pro 2.5.1 free trial is available for . immediate download
The Artifactory OSS 2.5 is available from or directly from . JFrog's web site SourceForge
1.
2.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.5.1.1
We are pleased to announce the availability of Artifactory 2.5.1.1!
This minor release affects . Itaddresses a critical that caused proxying of the to stop working. .Net clients bug NuGet Gallery
Instructions for upgrading to 2.5.1.1 from previous versions can be found . here
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.5.2
We are pleased to announce the availability of Artifactory 2.5.2
This minor release addresses an important security that may allow an attackerto run a cross-site scripting attack by uploading vulnerability
malicious content to Artifactory.
All users are urged to upgrade to this version.
Other important issues addressed in this release:
YUM metadata is now correctly calculated for repositories hosted in subdirectories.
RPM installer now works correctly on SUSE.
For a complete list of resolved issues please see the . JIRA release notes
Instructions for upgrading to 2.5.2 from previous versions can be found . here
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.6.0
We are pleased to announce the availability of Artifactory 2.6!
Important new features and changes in this version:
Download debugging - solve artifact resolution issues by getting detailed explain plan of the download request handling in your
browser.
Latest Maven snapshot download - it is now possible to download the latest version of a Maven snapshot via a simple non-unique
snapshot URL.(Pro)
Latest version REST- Artifactory can return the latest release or integrationversion of an artifact for any repository layout.(Pro)
Artifact versions REST - get all the release and/or integrationversions of an artifact for any repository layout.(Pro)
Improved replication - replication was optimized in terms of speed and overall resource consumption. Replication now uses streaming
and elimination (Pro) duplicate target checksum
Auto offline for remote repositories- a remote repository will now be auto put into temporal offline when encountering retrieval errors.
Before/After Build callbacks - tend to build publishing events in , including the ability to modify the build info object (e.g. user plugins
add new artifacts).(Pro)
Cron-based artifact cleanup - auto artifact cleanup can now be triggered by cron instead of using a time interval.
Custom artifact promotion- it is now possible to code custom artifact promotion logic, including interacting with builds, directly inuser
. Promotion logic can be executed via REST or via .(Pro) plugins CI integration
AfterDownloadError callback- tend to download errors in .(Pro) user plugins
Secure plugin executions - REST execution points in can be secured byspecifyingallowed users and/or groups.(Pro) user plugins
Per repository archive browsing- ability to turn on archive browsing for selected trusted repositories.
Many bug fixes and improvements
For a complete list of resolved issues please see the . JIRA release notes
Artifactory Pro 2.5.1.1 free trial is available for . immediate download
The Artifactory OSS 2.5.1.1 is available from or directly from . JFrog's web site SourceForge
Artifactory Pro 2.5.2 free trial is available for . immediate download
The Artifactory OSS 2.5.2 is available from or directly from . JFrog's web site SourceForge
1.
2.
3.
4.
5.
1.
2.
3.
4.
5.
1.
2.
3.
Instructions for upgrading to 2.6.0 from previous versions can be found . here
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.6.1
We are pleased to announce the availability of Artifactory 2.6.1!
Important features and changes in this version:
-GAVC and Quick Search performanceand resource consumption Faster GAVC search and quick search have been greatly
improved
Local replication fixed regression
L download now resolves much faster atest maven snapshot
Resolution repositories are now returned to Artifactory CI plugins correctly
Minor bug fixes and improvements
For a complete list of resolved issues please see the . JIRA release notes
Instructions for upgrading to 2.6.1 from previous versions can be found . here
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.6.2
We are pleased to announce the availability of Artifactory 2.6.2!
Important features and changes in this version:
Event based replication -Replication now supports continuous, event-based mirroring that allows you to achieve near real-time push
synchronization between repositories. Combined with scheduled replication, repositories areguaranteed to always be consistently in
sync even when one of the replication sides becomes unavailable.
Integration Improved P2 - P2 support has been extended with more straight-forward hosting of your own P2 repositories, better
composite resolution, and and easieraggregationof local and remote P2 repositories under a single virtual repository URL.
NuGet 2.0- Artifactory is now up-to-speed with all the changes introduced by the recently released . NuGet 2.0
Consistent path handling - URL and path logic handling has been rewritten to support across-the-board correct handling of special
. character encoding
Minor bug fixes and improvements
For a complete list of resolved issues please see the . JIRA release notes
Instructions for upgrading to 2.6.2 from previous versions can be found . here
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.6.3
We are pleased to announce the availability of Artifactory 2.6.3!
Important features and changes in this version:
Deploy artifacts from archive - Added REST and UI support for batch-deployment of multiple artifacts contained in an uploaded
archive, in a single HTTP transaction. Currently supported archive types: zip; tar; tar.gz; and tgz.
NuGet 2.0 packagesupdateis now working in Visual Studio.
Minor bug fixes and improvements
Artifactory Pro 2.6.0 free trial is available for . immediate download
The Artifactory OSS 2.6.0 is available from or directly from . JFrog's web site SourceForge
Artifactory Pro 2.6.1 free trial is available for . immediate download
The Artifactory OSS 2.6.1 is available from or directly from . JFrog's web site SourceForge
Artifactory Pro 2.6.2 free trial is available for . immediate download
The Artifactory OSS 2.6.2 is available from or directly from . JFrog's web site SourceForge
1.
2.
1.
2.
3.
4.
5.
6.
7.
1.
2.
3.
4.
For a complete list of resolved issues please see the . JIRA release notes
Instructions for upgrading to 2.6.3 from previous versions can be found . here
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.6.4
We are pleased to announce the availability of Artifactory 2.6.4!
Important features and changes in this version:
Storage quota management
Bug fixes and improvements
For a complete list of resolved issues please see the . JIRA release notes
Instructions for upgrading to 2.6.4 from previous versions can be found . here
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.6.5
We are pleased to announce the availability of Artifactory 2.6.5!
Important features and changes in this version:
Build Diffs: Visually compare the differences between two build runs for changes in artifacts, dependencies and environment variables
YUM Improvements: Support for YUM groups andand more efficient calculation of YUM metadata
Build Artifacts Archive: Retrieve an archive file containing all the artifacts related to a specific build
Build Artifacts Search: Find all the artifacts related to a specific build
Maven Latest Release Download: Latest release artifact query now also works for Maven-layout repositories
Configurable Request Parameters: Add custom query params to remote repository requests; This is useful, for example, when
needing to add an authentication token param, such as the one required by Maven Central SSL access.
Bug fixes and performance improvements
For a complete list of resolved issues please see the . JIRA release notes
Instructions for upgrading to 2.6.5 from previous versions can be found . here
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.6.6
We are pleased to announce the availability of Artifactory 2.6.6!
Important features and changes in this version:
: Per-file License Discovery You can now manually trigger a license scan per-artifact from the tree browser. This allows you to
auto-attach license information to artifacts outside the context of a CI build.
: SAML SSO Support Login to the Artifactory UI can now be integrated with any SAML IdP (Identity Provider). Artifactory now acts as a
SAML Service Provider.
: Bintray Integration Freely distribute your release artifacts and share them with the world via the service (currently in Beta). Bintray
You can upload individual binaries or build artifacts to Bintray directly from Artifactory.
Artifactory Pro 2.6.3 free trial is available for . immediate download
The Artifactory OSS 2.6.3 is available from or directly from . JFrog's web site SourceForge
Artifactory Pro 2.6.4 free trial is available for . immediate download
The Artifactory OSS 2.6.4 is available from or directly from . JFrog's web site SourceForge
Artifactory Pro 2.6.5 free trial is available for . immediate download
The Artifactory OSS 2.6.5 is available from or directly from . JFrog's web site SourceForge
4.
5.
6.
7.
: Build Diff REST Compare two builds for their published artifacts, used dependencies and environment using the REST API.
: Running Plugin Code as System It is now possible to execute selected plugin code blocks under an unrestricted system role, by using
the ' ' closure. asSystem{}
: Property Events in Plugins New storage callbacks are available that allow plugin developers to intercept property change events.
Bug fixes and performance improvements
For a complete list of resolved issues please see the . JIRA release notes
Instructions for upgrading to 2.6.6 from previous versions can be found . here
Enjoy Artifactory!
The Artifactory Team
Artifactory 2.6.7
We are pleased to announce the availability of Artifactory 2.6.7!
This minor release addresses few a critical s and . bug security improvement
For a complete list of resolved issues please see the . JIRA release notes
Instructions for upgrading to 2.6.7 from previous versions can be found . here
Enjoy Artifactory!
The Artifactory Team
Artifactory 3.0.0
We are excited to announce the major release of Artifactory 3!
21 April 2013
JFrog announces the release of the third major version of its flagship product, Artifactory, The Binaries Repository Manager. This release
delivers a huge performance boost and a fresh user interface.
Four years following Artifactory 2, the Artifactory 3 major release is available to all users (Open-source, Pro and SaaS versions).
Major Performance Boost
All the common usage scenarios such as checksum-based storage, binaries promotion, mirroring, repository management and remote proxying
have been optimized for speed. Depending on a particular usage scenario Artifactory 3 performs x10 to x100 times faster than Artifactory 2.x! On
top of that, Artifactory 3 also has a considerably lower memory footprint.
We have reimplemented from scratch the underlying metadata storage (retiring Jackrabbit, which has served us well for the last 4 years). With
this change, Artifactory utilizes SQL and relational databases in a unique way, significantly improving CI build performance over competitors and
previous versions of Artifactory.
User Interface Changes
The user interface has also undergone a facelift, providing a bright, clean and uncluttered display for users.
Black Duck Code Center Integration
In addition, the Artifactory 3 now supports BlackDuck Code-Center integration for open source license governance and vulnerability control.
Remote Searches with Bintray Integration
Artifactory users can now search for remote artifacts and get information about latest OSS releases from Bintray.com.
Artifactory Pro 2.6.6 free trial is available for . immediate download
The Artifactory OSS 2.6.6 is available from or directly from . JFrog's web site SourceForge
Artifactory Pro 2.6.7 free trial is available for . immediate download
The Artifactory OSS 2.6.7 is available from or directly from . JFrog's web site SourceForge
1.
2.
3.
4.
5.
User Tomcat 7 as the Default Container
Further, default distribution uses Tomcat 7 with both the RPM and the standalone versions of Artifactory.
System Requirements
Artifactory 3.0 requires Java 7
Supported Databases
Derby (embedded - zero configuration)
Oracle version 10g and above
MySQL with InnoDB version 5.5 and above
Microsoft SQL Server 2008 and above
Removed / Obsolete
We have discontinued support for XML Metadata, including related user plugin methods and REST API
XML XPath search
Sync resource REST API
Installation and Upgrade Instructions
For detailed installation instructions please refer to our user guide
Upgrading from 2.x versions requires only a simple process of exporting and then importing the current repository data.
For detailed upgrade instructions please refer to our upgrade guide
Changes
For a complete list of bug fixes and improvements in this version please see the JIRA Release Notes
Enjoy Artifactory!
JFrog Artifactory Team
Artifactory 3.0.1
We are pleased to announce the availability of Artifactory 3.0.1!
This release includes minor improvements to the installation and several bug fixes. Notable issues addressed by this version:
NuGet 2.5 support
Improved performance Bintray info panel
HTML Content browsing also supported for files outside of an archive
Fixed failure in archive indexing with duplicate (case insensitive) entries
Preventing duplicate permission target entries
For a complete list of resolved issues please see the . JIRA release notes
Additional info about Artifactory 3 can be found . here
Instructions for upgrading to 3.0.1 from previous versions can be found . here
Enjoy Artifactory!
The Artifactory Team
Artifactory 3.0.2
Artifactory Pro 3.0.1 free trial is available for . immediate download
The Artifactory OSS 3.0.1 is available from or directly from JFrog's web site Bintray.
1.
2.
3.
4.
5.
6.
7.
We are pleased to announce the availability of Artifactory 3.0.2!
07 July 2013
This release brings back support for PostgreSQL database and includes several bug fixes and improvements. Notable issues addressed by this
version:
PostgreSQL support
YUM repository improvements and bug fixes
Users can header using a custom property override the response Content-Type
Artifacts count and storage size added to the public API user plugins
Simple patterns can be used inlatest version search
Force REST API maven metadata recalculation
Improvements and bug fixesaround storage GC
For a complete list of resolved issues please see the . JIRA release notes
Additional info about Artifactory 3 can be found . here
Instructions for upgrading to 3.0.2 from previous versions can be found . here
To get automatic notification for new releases of Artifactory you can watch Artifactory on . Bintray
Enjoy Artifactory!
The Artifactory Team
Artifactory Pro 3.0.2 free trial is available for . immediate download
The Artifactory OSS 3.0.2 is available from or directly from JFrog's web site Bintray.