落とし穴に立て札を立てるが如く

ハマりどころの解決が少しでも早くなることを願って書いていきます

【もっそい小ネタ】Azure PipelineのAPIでリポジトリのtagを指定してパイプラインを実行

f:id:nam_yu_sql:20210310215613j:plain
この記事はcloud.config tech blogにもマルチポストしました。

tech-blog.cloud-config.jp

はじめに

以前の記事で、Azure PipelineのAPIからパイプラインの実行ができることを共有しました。
今回は、その際にgit上のタグを指定することで指定したタグのコミットの時点のコードを使ってパイプラインを実行できることを共有します。
CI/CDパイプラインを実行する際に開発中のアプリケーションの特定のバージョンのものをデプロイしたいこともあるかと思いますが、gitのタグを利用することが一つの方法になるかと思います。

リポジトリのtagを指定してパイプラインを実行する

さっくりパイプラインyamlを作成、更新するコミットをmasterブランチに打ち、それぞれのコミットに以下のようなタグを振りました。
f:id:nam_yu_sql:20210310215625p:plain
ちなみにパイプラインyamlの中身は以下のようになっています。

trigger:  
- none  
  
pool:  
  vmImage: ubuntu-latest  
  
steps:  
- script: echo This is pipeline v2  
  displayName: 'Run a one-line script'  

v1のコミットにおいては、 - script: echo This is pipeline v2 の行が - script: echo This is pipeline v2 になっています。

それでは、まずは以下のリクエストをbodyに入れてパイプラインを回すAPIを叩いてみます。
Azure Pipelineを回すAPIの叩き方はこちらで紹介しています。

{  
    "resources":   
    {  
        "repositories":   
        {  
            "self":   
            {  
            "refs/heads/master"  
            }  
        }  
    }  
}  

結果はこのようになりました。
f:id:nam_yu_sql:20210310215639p:plain
masterブランチの先端のコミットの状態のpipeline.yamlが読まれ、 This is pipeline v2 のメッセージが表示されていますね。

それでは次は、リクエストボディを以下のようにしてリクエストを送信します。

{  
    "resources":   
    {  
        "repositories":   
        {  
            "self":   
            {  
            "refName": "refs/tags/v1"  
            }  
        }  
    }  
}  

しばらく待って・・・・パイプラインが回りました。
結果を見てみましょう。
パイプラインの実行結果一覧では今回の実行ではv1のタグが付いたコミットを使用している表示がされています。
f:id:nam_yu_sql:20210310215707p:plain
また、実行結果の詳細画面では・・・
f:id:nam_yu_sql:20210310215716p:plain
This is pipeline v1 と表示されていますね。

指定したタグのコミットのコードがパイプラインで使用されていることが確認できました。
この状態ならpipeline.yaml以外のコードもこのコミットの状態のものなので、タグを指定することでアプリケーションのコードも固定することができます。
これを用いることはデプロイするアプリケーションのバージョンを管理する方法の一つとして使えるかと思います。

おわりに

今回はAzure Pipelineを実行するAPIの話を土台に、gitのタグをリクエストで指定してやることでそのタグのコミットのコードが使用できることを共有しました。
と言っても、肝なのはリクエストに含まれる「refName」のパラメータ一つなので、今回は小ネタとして共有しました。
幸せなCI/CDライフを!