CentOS 7.9 に Jenkins をインストールする

CentOS 7.9 に Jenkins をインストールする

I. 概要

Jenkinsこれは、Java言語開発に基づいた継続的構築ツール プラットフォームであり、主にソフトウェアとプロジェクトの継続的かつ自動的な構築/テストに使用されます。プリセット設定とビルド スクリプトを実行でき、Git コード ベースと統合してビルドの自動トリガーとタイミング トリガーを実現することもできます。

2. インストール

1.OpenJDKをインストールする

は 向けに書かれた継続的ビルド プラットフォームでJenkinsあるため、インストールすることが不可欠です。JavaJava

ここでは、オープンソースをインストールすることを選択しますopenjdkオープンソースの実装openjdkですYesと Yesの具体的な違いについては、次の記事を参照して理解してください。ここでは、パッケージ マネージャーを直接使用して をインストールできますSunJDKopenjdkSunJDKyumopenjdk

# 安装 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付属していないため、インストールするにはインストールソースをインポートする必要があります。インポート後、コマンドを使用してインストールします。JenkinsJenkinsYum

# 使用 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/

画像-20230622222946408

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. プラグインをインストールする

画像-20230622223129352

5. 管理者ユーザーの作成

ここで「管理者アカウントで続行」をクリックします。パスワードはデフォルトのパスワードのままです: cat /var/lib/jenkins/secrets/initialAdminPassword

画像-20230622230545848

6. インストールを完了します

次のステップ 次のステップ

画像-20230622230739785

4. 機能テスト

1. 新しいタスクを作成する

最初のステップ: 新しいアイテムを作成する

画像-20230622230925420

ステップ 2: コマンドを追加する

构建項目を検索し、 を選択し增加构建步骤、 を選択し执行shell、次のコマンドを入力します

docker -v
docker pull node:latest

画像-20230622231117523

ステップ 3: 今すぐ保存してビルドする

画像-20230622231210101

ステップ 4: エラー: 許可がありません

画像-20230622231249197

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/Sschema です。コマンドを使用するときdocker、実際には、コマンドはデーモン プロセスsocketdocker通信するために使用され、dockerコマンドが正常に実行されるようになります。

ただしLinux、では、はユーザーUnix socketに属しているため、アクセス許可が必要です。公式の説明は次のとおりです。rootroot

非 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だけで済みます。jenkinsdocker

sudo groupadd docker          #新增docker用户组
sudo gpasswd -a jenkins docker  #将当前用户添加至docker用户组
newgrp docker                 #更新docker用户组

ジェンキンスを再起動する

sudo service jenkins restart

今すぐ構築する

画像-20230622233548479

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

おすすめ

転載: blog.csdn.net/qq_29689343/article/details/131345599