# jenkins-update-center  

![GitHub](https://img.shields.io/github/license/lework/jenkins-update-center)
[![](https://data.jsdelivr.com/v1/package/gh/lework/jenkins-update-center/badge)](https://www.jsdelivr.com/package/gh/lework/jenkins-update-center)

Jenkins mirror update center generator


## Update time

Updated daily at 1 AM UTC


## Mirror site

- tencent https://mirrors.cloud.tencent.com/jenkins/
- huawei https://mirrors.huaweicloud.com/jenkins/
- tsinghua https://mirrors.tuna.tsinghua.edu.cn/jenkins/
- ustc https://mirrors.ustc.edu.cn/jenkins/
- bit https://mirrors.bit.edu.cn/jenkins/
- aliyun https://mirrors.aliyun.com/jenkins/



**file update-center.json** 

| Site     | Source                                                       | CDN                                                          |
| -------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| tencent  | https://raw.githubusercontent.com/lework/jenkins-update-center/master/updates/tencent/update-center.json | https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/updates/tencent/update-center.json |
| huawei   | https://raw.githubusercontent.com/lework/jenkins-update-center/master/updates/huawei/update-center.json | https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/updates/huawei/update-center.json |
| tsinghua | https://raw.githubusercontent.com/lework/jenkins-update-center/master/updates/tsinghua/update-center.json | https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/updates/tsinghua/update-center.json |
| ustc     | https://raw.githubusercontent.com/lework/jenkins-update-center/master/updates/ustc/update-center.json | https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/updates/ustc/update-center.json |
| bit      | https://raw.githubusercontent.com/lework/jenkins-update-center/master/updates/bit/update-center.json | https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/updates/bit/update-center.json |
| aliyun      | https://raw.githubusercontent.com/lework/jenkins-update-center/master/updates/aliyun/update-center.json | https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/updates/aliyun/update-center.json |

**mirror site speed test** 

```bash
curl -sSL https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/speed-test.sh | bash
```



## Usage mirror site

1. Upload custom CA file.

    ```bash
    [ ! -d /var/lib/jenkins/update-center-rootCAs ] && mkdir /var/lib/jenkins/update-center-rootCAs
    wget https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/rootCA/update-center.crt -O /var/lib/jenkins/update-center-rootCAs/update-center.crt
    chown jenkins.jenkins -R /var/lib/jenkins/update-center-rootCAs
    ```

    > Or turn off the signature verification of the update service.
    >
    > ```bash
    > sed -i 's#$JENKINS_JAVA_OPTIONS#$JENKINS_JAVA_OPTIONS -Dhudson.model.DownloadService.noSignatureCheck=true#g' /etc/init.d/jenkins
    > 
    > systemctl daemon-reload
    > ```

2. Change Update Site url.

   ```bash
   sed -i 's#https://updates.jenkins.io/update-center.json#https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/updates/tsinghua/update-center.json#' /var/lib/jenkins/hudson.model.UpdateCenter.xml
   rm -f /var/lib/jenkins/updates/default.json

   systemctl restart jenkins
   ```
   
   > Or it can be modified on the web.
   >
   > Go to `Jenkins` → `Manage Jenkins` → `Manage Plugins` → `Advanced` → Update Site and submit URL to your `https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/updates/tsinghua/update-center.json`



## Steps to create local mirror of Jenkins update center:

1. Clone code:

```bash
git clone https://github.com/lework/jenkins-update-center.git 
```

2. Generate self-signed certificate:

```bash
cd jenkins-update-center
openssl genrsa -out rootCA/update-center.key 2048
openssl req -new -x509 -days 3650 -key rootCA/update-center.key -out rootCA/update-center.crt
```

3. Rsync into your www root directory:

```bash
rsync -avz --delete rsync://rsync.osuosl.org/jenkins/ /var/www/jenkins
```

4. Install dependencies:

```bash
yum -y install make gcc automake autoconf python3-devel git
pip install -r requirements.txt
```
5. Setup mirrors json:

   > Set your mirror url
   
   ```
   # mirrors.json
   {
       "localhost": "http://localhost/jenkins/"
   }
   ```
   
6. Run the following python code:

```bash
python3 generator.py
cp localhost/update-center.json /var/www/jenkins/
```

1. Put `update-center.crt` into `${JENKINS_HOME}/update-center-rootCAs` folder.
2. Go to `Jenkins → Manage Jenkins → Manage Plugins → Advanced → Update Site` and submit URL to your `update-center.json`.

