Nexus Usage - hqzhang/cloudtestbed GitHub Wiki

Sonatype Nexus Usage

Sonatype Nexus is a repository tool for package and library store, docker image store. it is used for maven, npm package store, docker image store and build result (package and docker image) store.
Nexus Usage
Nest API
repo=https://localhost:8081/repository/$reponame/$repopath/$filename
nexus_verify(){
    curl -u $user:$pass --fail --silent --head $repo
}
nexus_delete(){
    curl -u $user:$pass --silent --request DELETE $repo
}
nexus_upload(){
    curl -u $user:$pass --progress-bar -X POST $repoURL \
        -F raw.directory=$repopath \
        -F raw.asset1=@$filename  \
        -F raw.asset1.filename=$filename.  \
        -w '%{http_code}'
}
nexus_download(){
    curl -u $user:$pass --fail --progress-bar -O $repo
}

0. Nexus Configuration

1. Maven configuration

2. Docker push and pull
   docker pull  image_url:tag
   docker push   image_url:tag
3. Package push and pull
   

Nexus Installation

0. Install Java

00. Install nginx
sudo apt install nginx
set config file vim /etc/nginx/nginx.conf
user nginx;
work_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

event { worker_connections 1024;  }

http {
      log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" '
      access_log /var/log/nginx/access.log main;
      proxy_send_timeout 120;
      proxy_read_timeout 300;
      proxy_buffering off;
      tcp_nodelay on;
server { listen 80; server_name xxxxx; return 301 https://$server_name$request_uri; }

server {
listen *:443 ssl;
server name sonar.wavecloud.com;

ssl on;
ssl_certificate.    certs/chain.crt
ssl_certificate_key certs/private.key;

#ssl_protocols SSLv2 SSLv3 TLSv1;
#ssl_cipfers HIGH:!aNULL:!MD5;
#ssl_prefer_server_ciphers on;

location/{
proxy_pass http://127.0.0.1:8081;
proxy_set_header HOST $HOST ;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto "https";
#proxy_max_temp_file_size 0;
#proxy_max_body_size 10m;
#proxy_body_buffer_size;
#proxy_connect_timeout 90;
#proxy_send_timeout 90;

#proxy_buffer_size 4k;
#proxy_buffers 4 32k;
#proxy_busy_buffers_size 64k;
#proxy_temp_file_write_size 64k;
}
    Server {
     Listen 8443 ssl;
     server_name xxxx....
       Location/ { :8083}
      }
    Server {
     Listen 9443 ssl;
     server_name xxxx....
       Location/ { :8883}
}
key at /etc/nginx/certs
  1. Install Nexus
0)  download and running
wget https://download.sonatype.com/nexus/3/latest-mac.tgz
and mv nexus-3.32.0-03 to /usr/local/opt/nexus
and mv sonatype-work to /usr/local/opt/sonatype-worke

1)  running
   /usr/local/opt/sonarqube/bin/nexus start

2) set servive for mac 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>homebrew.mxcl.sonarqube</string>
    <key>ProgramArguments</key>
    <array>
    <string>/usr/local/opt/nexus/bin/nexus</string>
    <string>start</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

3) set servive for linux /etc/systemd/system/nexus.service
[Unit]
Descriptin=Nexus service
After=network.target
[Service]
Type=forking
LimitNOFILE=65536
User=myuser
Group=mygroup
PermissionStartOnly=True
ExecStart=/urs/local/opt/nexus/bin/nexus start
ExecStop=/urs/local/opt/nexus/bin/nexus stop
StandardOutput=syslog
Restart=on-abortalways
[Install]
WantedBy=multi-user.target

4.sonar config files
 0)JAVA_HOME can be changed in bin/sonar

 1)/usr/local/opt/nexus/bin/nexus.vmoptions
     -Dkaraf.log=../sonatype-work/nexus3/log
     -Dkaraf.data=/AppData1/sonatype-work/nexus3
     -Djava.io.tmpdir=/AppData1/sonatype-work/nexus3/tmp
 2) /usr/local/opt/nexus/bin/nexus.rc
    run_as_user="myuser"


  5) chown
     Chown -R nexus_admin_fcpl_s:"domain users" latest-nexus blobs
     Rm -f sonatype-work
     Vim /.bashrc
     Export NEXUS_HOME=/opt/nexus
     Vim /opt/nexus/bin/nexus.rc
     run_as_user="myuser"
 
  6) add symbol link
   Ln -s /opt/nexus/bin/nexus /etc/init.d/nexus
   Chkconfig--add nexus
Chkconfig--list nexus

2. Nexus maintenance
  1)Service nexus status
   Service nginx16-nginx
 
  2) stop
   sudo service nexus stop

  3) config symbol link
    cd /AppData/sonartype-work/nexus3/blobs/
    Ls -al
    sudo Rm docker-images
    Ls -s /AppData_NFS/sonatype-work/nexus3/blobs/docker-images docker-images
  4) sudo service nexus start

  5) run reconcile comp db from blob store----2h10min
  6) run rebuild repository browse----1min45sec

  7) repo RelMng/RMtools/nextTest
     Run input id/passwork and release
⚠️ **GitHub.com Fallback** ⚠️