Jenkins安装完成后,还要做哪些工作呢?如何结合nginx来更好的对外提供服务呢?本文记录了从安装jenkins到正常运行的一些工作。

Jenkins 介绍

The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.

Jenkins帮助我们构建一切可自动化的工作。我对jenkins的看法,它替代了我们传统的运维、测试工作,相当于解放了我们的双手。当然第一次是需要你去定义它,你来把工作交给它。 以前我们发布程序可能是通过手动部署,或者使用工具批量部署,现在是在jenkins里面定义工作流,当触发了相对的条件时,Jenkins会自动的执行对应的工作。自动化测试、自动化部署,达到 持续交付(CD)、持续集成(CI)的目的。

安装jenkins

参考:官网安装指导Installing Jenkins on Ubuntu

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
deb https://pkg.jenkins.io/debian-stable binary/
sudo apt-get update
sudo apt-get install jenkins
sudo systemctl enable jenkins

附上ansible 安装playbook

安装nginx

参考:官网安装指导Installing Nginx Ubuntu

deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx
sudo apt-get update
sudo apt-get install nginx

nginx与jenkins结合,并提供默认https

这里我们分成几小块,先配置nginx的默认https证书,我配置的是全局范围都使用同一个ssl证书(证书由 Lets’s Encrypt提供).

配置文件

nginx.conf 在http 范围内添加2行内容, 之后将证书文件放入/etc/nginx/ssl目录下。

http {
    ...
    ssl_certificate    ssl/fullchain.cer;
    ssl_certificate_key ssl/oo.xxx.key;
}

jenkins-site.conf

upstream app_server {
    server 127.0.0.1:8080 fail_timeout=0;
}

server {
    listen 80;
    server_name oo.xxx.com;
    return 301 https://$host/$request_uri;
}

server {
    listen 443 ssl;
    server_name oo.xxx.com;

    location / {
      proxy_set_header        Host $host:$server_port;
      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 $scheme;
      proxy_redirect http:// https://;
      proxy_pass              http://app_server;
    }
}
重启生效

重启nginx,使用oo.xxx.com 登录即可访问Jenkins登录页面。默认admin/admin登录。

设置 Jenkins安全性

一些有用的插件

这里还有很多很多color的主题供你选择哈:afonsof

参考

Jenkins behind an NGinX reverse proxy