CentOS 7.9 に Jenkins をインストールする
I. 概要
Jenkins
これは、Java
言語開発に基づいた継続的構築ツール プラットフォームであり、主にソフトウェアとプロジェクトの継続的かつ自動的な構築/テストに使用されます。プリセット設定とビルド スクリプトを実行でき、Git コード ベースと統合してビルドの自動トリガーとタイミング トリガーを実現することもできます。
2. インストール
1.OpenJDKをインストールする
は 向けに書かれた継続的ビルド プラットフォームでJenkins
あるため、インストールすることが不可欠です。Java
Java
ここでは、オープンソースをインストールすることを選択しますopenjdk
。はオープンソースの実装openjdk
です。Yesと Yesの具体的な違いについては、次の記事を参照して理解してください。ここでは、パッケージ マネージャーを直接使用して をインストールできます。SunJDK
openjdk
SunJDK
yum
openjdk
# 安装 java
yum install -y fontconfig java-11-openjdk
# 检查 java 版本
[root@localhost ~]# java -version
openjdk version "11.0.19" 2023-04-18 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.19.0.7-1.el7_9) (build 11.0.19+7-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.19.0.7-1.el7_9) (build 11.0.19+7-LTS, mixed mode, sharing)
2.Jenkinsをインストールする
https://pkg.jenkins.io/redhat-stable/
のインストールソースはYum
付属していないため、インストールするにはインストールソースをインポートする必要があります。インポート後、コマンドを使用してインストールします。Jenkins
Jenkins
Yum
# 使用 wget 下载 Jenkins 软件包的存储库配置文件,并将其保存到 /etc/yum.repos.d/jenkins.repo 文件中
# 证书过期,不检查证书:sudo wget --no-check-certificate -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
# 使用 rpm 导入 Jenkins 软件包的 GPG 密钥,以确保安装的软件包是经过验证的,并且没有被篡改过
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# 安装 EPEL 的发行包,通过安装 EPEL 发行包,您可以访问一些常用的第三方软件包
yum install epel-release
# 使用 yum 安装 Jenkins 软件包
yum install -y jenkins
3.ジェンキンスを起動する
service jenkins start
# service jenkins restart restart 重启 Jenkins
# service jenkins restart stop 停止 Jenkins
4. Jenkins のポートを解放する
起動後Jenkins
、この時点ではJenkins
デフォルトのポートが開きます8080
。ただし、ファイアウォールの制限により、8080
ポートがインターフェイスに外部からアクセスできるようにファイアウォールを手動で許可する必要があります。
ここでは、CentOS
の下のfirewall-cmd
、追加後にファイアウォールを再起動します。
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=50000/tcp --permanent
systemctl reload firewalld
3. Jenkins 構成を初期化する
1. アクセス
http://192.168.10.130:8080/
2.ジェンキンスのロックを解除する
パスワードを表示
cat /var/lib/jenkins/secrets/initialAdminPassword
3. 清華大学の送信元アドレスを設定する
Jenkins
プラグインサーバーが海外にあるため速度はあまり良くありません。Jenkins
プラグインをインストールする前に、清華大学のプラグイン ソースを置き換える必要があるため、まだ [プラグインのインストール] をクリックしないでください。
交換方法はとても簡単です。サーバーに入り、/var/lib/jenkins/updates/default.json
プラグインのソース アドレスを清華大学のソース アドレスに置き換え、google を baidu に置き換えます。
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /var/lib/jenkins/updates/default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' /var/lib/jenkins/updates/default.json
4. プラグインをインストールする
5. 管理者ユーザーの作成
ここで「管理者アカウントで続行」をクリックします。パスワードはデフォルトのパスワードのままです: cat /var/lib/jenkins/secrets/initialAdminPassword
6. インストールを完了します
次のステップ 次のステップ
4. 機能テスト
1. 新しいタスクを作成する
最初のステップ: 新しいアイテムを作成する
ステップ 2: コマンドを追加する
构建
項目を検索し、 を選択し增加构建步骤
、 を選択し执行shell
、次のコマンドを入力します
docker -v
docker pull node:latest
ステップ 3: 今すぐ保存してビルドする
ステップ 4: エラー: 許可がありません
Started by user admin
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/hello-jenkins
[hello-jenkins] $ /bin/sh -xe /tmp/jenkins6376592547251823106.sh
+ docker -v
Docker version 24.0.2, build cb74dfc
+ docker pull node:latest
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=node&tag=latest": dial unix /var/run/docker.sock: connect: permission denied
Build step 'Execute shell' marked build as failure
Finished: FAILURE
2. Unix ソケットの権限の問題
説明する
docker
のスキーマはC/S
schema です。コマンドを使用するときdocker
、実際には、コマンドはデーモン プロセスsocket
とdocker
通信するために使用され、docker
コマンドが正常に実行されるようになります。
ただしLinux
、では、はユーザーUnix socket
に属しているため、アクセス許可が必要です。公式の説明は次のとおりです。root
root
非 root ユーザーとして Docker を管理する Docker デーモンは、TCP ポートではなく Unix ソケットにバインドします。デフォルトでは、Unix ソケットはユーザー root によって所有されており、他のユーザーは sudo を使用してのみアクセスできます。docker デーモンは常に root ユーザーとして実行されます。docker コマンドを使用するときに sudo を使用したくない場合は、docker という Unix グループを作成し、そこにユーザーを追加します。docker デーモンが起動すると、docker グループによる Unix ソケットの所有権が読み取り/書き込み可能になります。
非 root ユーザーとして Docker を管理する Docker デーモンは、TCP ポートではなく Unix ソケットにバインドします。デフォルトでは、Unix ソケットは root ユーザーによって所有され、他のユーザーは sudo を介してのみアクセスできます。Docker デーモンは常に root ユーザーとして実行されます。docker コマンドを使用するときに sudo を使用したくない場合は、docker という Unix ユーザー グループを作成し、そこにユーザーを追加できます。docker デーモンが起動すると、Unix ソケットの所有権が docker ユーザー グループの読み取りおよび書き込み権限に設定されます。
しかしdocker
、では、docker
の概念が提供されます用户组
。Shell
実行ユーザーをdocker
という名前のユーザー グループに追加すると、コマンドdocker
が通常どおり実行できるようになります。
Jenkins を Docker ユーザー グループに追加する
エンドJenkins
ユーザーは do it で実行されるため、ユーザー グループに追加するjenkins
だけで済みます。jenkins
docker
sudo groupadd docker #新增docker用户组
sudo gpasswd -a jenkins docker #将当前用户添加至docker用户组
newgrp docker #更新docker用户组
ジェンキンスを再起動する
sudo service jenkins restart
今すぐ構築する
Started by user admin
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/hello-jenkins
[hello-jenkins] $ /bin/sh -xe /tmp/jenkins1917769180207902795.sh
+ docker -v
Docker version 24.0.2, build cb74dfc
+ docker pull node:latest
latest: Pulling from library/node
0e29546d541c: Pulling fs layer
9b829c73b52b: Pulling fs layer
cb5b7ae36172: Pulling fs layer
......
6f9f74896dfa: Pull complete
f2930ff7fb60: Pull complete
c1d26179dd86: Pull complete
1fa56dd41537: Pull complete
321141c774e9: Pull complete
Digest: sha256:36aca218a5eb57cb23bc790a030591382c7664c15a384e2ddc2075761ac7e701
Status: Downloaded newer image for node:latest
docker.io/library/node:latest
Finished: SUCCESS