概要
前回 パイプライン機能の実行方法を紹介しました
デフォルトでは Microsoft が提供する pool にあるエージェントを使って実行しました
その場合は共有のリソースになるので順番待ちになったりします
今回は独自で Pool (Agent) を構築しパイプラインを実行する方法を紹介します
環境
- Azure Devops (2024/03/07 時点)
- macOS 11.7.10
- Ubuntu 22.04 (Agent)
- azure-pipelines-agent 3.234.0
pool の追加
Project Settings -> Agent pools -> Add pool を選択します
Pool type は「Self-hosted」を選択します
Name には好きな名前の pool 名を指定します (あとで azure-pipelines.yml から指定するのに使います
今回は権限はすべてパイプラインが扱えるようにします
Pool が作成されると一覧に表示されます
エージェントの追加
作成した Pool に Agent を追加します
実際パイプラインが実行されるのは Agent で Pool はエージェントを管理するグループになります
作成した test_pool を選択し右上の「New agent」を選択します
するとエージェントをインストールし構築する手順が表示されるので指示通りにインストールしましょう (手順が古い場合があるので注意、後述に詳細あり
エージェントの構築
azure-pipelines-agent をインストールします
docker でも動作しますが今回は初回なので指示通りバイナリインストールで構築します
ただコンパネで表示されるコマンドのエージェントのバージョンはかなり古いのでリポジトリにある安定の最新版をインストールするようにしましょう
Agent は今回 Ubuntu 上に構築します
-
mkdir azure_devops_agent && cd azure_devops_agent
-
wget https://vstsagentpackage.azureedge.net/agent/3.234.0/vsts-agent-linux-x64-3.234.0.tar.gz
-
tar zxvf vsts-agent-linux-x64-3.234.0.tar.gz
-
./config.sh
___ ______ _ _ _
/ _ \ | ___ (_) | (_)
/ /_\ \_____ _ _ __ ___ | |_/ /_ _ __ ___| |_ _ __ ___ ___
| _ |_ / | | | '__/ _ \ | __/| | '_ \ / _ \ | | '_ \ / _ \/ __|
| | | |/ /| |_| | | | __/ | | | | |_) | __/ | | | | | __/\__ \
\_| |_/___|\__,_|_| \___| \_| |_| .__/ \___|_|_|_| |_|\___||___/
| |
agent v3.234.0 |_| (commit 21ca259)
>> End User License Agreements:
Building sources from a TFVC repository requires accepting the Team Explorer Everywhere End User License Agreement. This step is not required for building sources from Git repositories.
A copy of the Team Explorer Everywhere license agreement can be found at:
/home/devops/work/azure_devops_agent/license.html
Enter (Y/N) Accept the Team Explorer Everywhere license agreement now? (press enter for N) > Y
>> Connect:
Enter server URL > https://dev.azure.com/xxx/
Enter authentication type (press enter for PAT) >
Enter personal access token > ****************************************************
Connecting to server ...
>> Register Agent:
Enter agent pool (press enter for default) > test_pool
Enter agent name (press enter for agent01) >
Scanning for tool capabilities.
Connecting to the server.
Successfully added the agent
Testing agent connection.
Enter work folder (press enter for _work) >
2024-03-07 04:56:11Z: Settings Saved.
Server URL は自身の Azure Devops の URL を組織名付きで入力しましょう
プールの選択部分だけ test_pool にします
default でも特に問題ないですが azure-pipelines.yml で指定する pool 名も default にしましょう
他は基本はすべてデフォルトの設定で進めて OK です
設定できたら起動しましょう
-
./run.sh
Scanning for tool capabilities.
Connecting to the server.
2024-03-07 04:59:08Z: Listening for Jobs
上記のようになれば起動完了です
liblttng-ust0 がない
もし必要なパッケージがまだインストールされていない場合は以下で自動でインストールできます
-
sudo ./bin/installdependencies.sh
詳しいインストール方法はこちらが参考になります
E: Unable to locate package liblttng-ust0
というエラーになる場合は bin/installdependencies.sh
を編集して liblttng-ust0 -> liblttng-ust1 に変更して再度実行しましょう
また上記のエラーは azure-pipeline-agent のバージョンが古い場合にも起こるので解決策として最新の azure-pipeline-agent をインストールすると良いでしょう
個人アクセストークン (PAT) の取得
こちらを参考に取得しておきましょう
Azure Devops への疎通
azure-pipeline-agent から Azure Devops へ通信できる必要があります
Azure Devops から Agent への疎通は不要ですが最低限 Agent -> Azure Devops のエンドポイントへの通信は必要になります
動作確認
azure-pipelines.yml を編集して使用する pool を指定しましょう
trigger:
batch: true
branches:
include:
- master
pool: test_pool
jobs:
- job: TestJob
steps:
- script: |
echo "Hello, Azure Pipelines!"
cat /etc/issue
uname -a
displayName: "Run My Command"
これでプロジェクトのパイプラインを確認すると問題なくジョブが実行されていることが確認できると思います
default の pool で進めた場合は default pool にパイプラインを実行する権限がないので権限を与えて上げるとパイプラインが実行し始めると思います
最後に
Azure Devops の Pipeline で独自のエージェントを構築してパイプライン実行してみました
Gitlab Runner に非常に似ている感じになります
Azure Devops は pool ないに Agent を追加する感じです
Gitlab では GroupRunner などがそれにあたりますがやや管理方法が異なる感じになります
また gitlab-ci.yml と azure-pipelines.yml との互換性は全くないのでそこは書き換えなどの処理が必要です
0 件のコメント:
コメントを投稿