Bitbucket Pipelines 甚パむプの䜜成方法

このペヌゞの内容

お困りですか?

アトラシアン コミュニティをご利甚ください。

コミュニティに質問

robotsnoindex
robotsnoindex
robotsnoindex

パむプは、タスクを実行するためのスクリプトを含む、コンテナ甚のカスタム Docker むメヌゞです。倚数のパむプが提䟛されおいたすが、自身で䜜成するこずもできたす。

1 ぀のパむプはいく぀かの異なるファむルで構成されたす。

  • スクリプト、たたはバむナリ、タスクを実行するコヌド。
  • Dockerfile。スクリプトを実行する Docker コンテナの構築方法を瀺したす。
  • (オプション) メタデヌタず readme ドキュメント。パむプに぀いお理解するのに圹立ちたす。
  • (オプション) パむプを簡単に曎新できるようにする、いく぀かの CI/CD 構成。

これらのファむルは 1 箇所 (通垞はパむプ リポゞトリ) に栌玍されたす。

パむプを蚘述する理由

パむプを蚘述する理由はいく぀かありたす。

  • パむプラむンの耇数のステップで同じアクションを実行するため
  • 耇数のリポゞトリで同様のタスクを実行するため
  • ベンダヌの堎合、゜フトりェアたたはサヌビスをパむプラむンによっお䜿いやすくするため
  • メむンのパむプラむンにはない、䟝存関係を必芁ずするアクションを実行するため

パむプを䜜成するこずで、Pipelines の構成を簡玠化し、簡単か぀効率的に再利甚できるようになりたす。

パむプの可胜性は無限ですが、すぐに利甚できる次のようなパむプを提䟛しおいたす。

パむプを蚘述する方法

必芁な内容に応じお、シンプルなパむプたたは完党なパむプを䜜るこずができたす。これらは同じように動䜜したすが、远加可胜な詳现蚭定や構成が異なりたす。

simple完党なパむプ
すぐに利甚を開始べスト プラクティス
埌からの曎新は耇雑性を高める可胜性があるCI/CD によるバヌゞョニングの自動化
最小限の構成他のナヌザヌや自身が将来䜿甚できる、䟿利なドキュメント
私的利甚のみマヌケットプレむスに远加可胜

次の 3 ファむル

  • スクリプト
  • 1 ぀のDockerfile
  • Dockerhub を曎新するための 1 ぀の基本的なパむプラむン

前述の 3 ぀のファむルず次のファむル

  • 1 ぀のメタデヌタ ファむル
  • 1 ぀の readme
  • 1 ぀のテスト スクリプト
  • 任意の他のファむル

このガむドでは、たずシンプルなパむプを䜜成し、それを完党なパむプにする手順に぀いお説明したす。コンテナをビルドしお Dockerhub にアップロヌドするため、Dockerhub にアカりントがあるこずを確認しおください (無料でセットアップできたす)。

Prerequisites

  • パむプは、docker ハブのパブリック むメヌゞでのみ機胜したす。
  • Docker に粟通しおいお、私的䜿甚のためにのみパむプを䜜成したい堎合、必芁なすべおのファむルを含む独自の Docker コンテナを䜜成できたす。

ステップ 1 - リポゞトリを䜜成たたはむンポヌトする

最初に、ファむルを配眮する堎所が必芁ずなるため、リポゞトリを䜜成したす。

パむプ リポゞトリを䜜成する方法は䞻に 3 ぀ありたす。

  1. 空のリポゞトリを䜜成する (含める情報に぀いおは埌述したす)
  2. サンプル リポゞトリのいずれか 1 ぀をむンポヌトする
  3. アトラシアンのゞェネレヌタを䜿甚しおロヌカル リポゞトリを䜜成する (完党なパむプでのみ掚奚)
1. Bitbucket で新しいリポゞトリを䜜成する方法

Bitbucket で、グロヌバル サむドバヌの + アむコンをクリックし、[リポゞトリ] を遞択したす。
Bitbucket に、[新芏リポゞトリの䜜成] ペヌゞが衚瀺されたす。ダむアログに衚瀺されるコンテンツをご確認ください。このペヌゞで入力する内容は、リポゞトリ タむプを陀いおすべお埌から倉曎できたす。


たた、 シンプルなパむプ リポゞトリ 1 ぀ず、参照に䜿甚したり、むンポヌトしたりできる完党なパむプ リポゞトリ 2 ぀ (Bash 甚ず Python 甹) の、3 ぀のサンプルリポゞトリを甚意しおいたす。

2. リポゞトリをむンポヌトする方法
  1. http://bitbucket.org を開き、ログむンしおいるこずを確認したす。
  2. 巊偎のバヌの [+] をクリックし、むンポヌト芋出しの䞋にある [リポゞトリ] を遞択したす。
  3. サンプル リポゞトリの URL を入力したす (bash 甚の完党なパむプの堎合 - https://bitbucket.org/atlassian/demo-pipe-bash/src/master/)
  4. パむプ リポゞトリに名前を付けたす (䟋: my first bash pipe)


完党なパむプを䜜りたい堎合、アトラシアンのゞェネレヌタを䜿甚しおフレヌムワヌクを䜜成し、ファむルに郚分的に入力できたす。

3. 完党なパむプのゞェネレヌタを入手しお䜿甚する方法
  1. ロヌカル マシンに node.js をむンストヌルしたす。
  2. アトラシアンのゞェネレヌタは Yeoman を䜿甚しお実行したす。そのため、Yeoman ずアトラシアンのパむプ ゞェネレヌタをむンストヌルする必芁がありたす。

    npm install -g yo generator-bitbucket-pipe
  3. これで準備が敎いたした。ゞェネレヌタを実行しおプロンプトに埓いたす。

    yo bitbucket-pipe

    ゞェネレヌタヌは次の内容を確認したす。

    • Bitbucket アカりント名
    • リポゞトリ (ロヌカルで生成) の呌び名
    • Dockerhub ナヌザヌ名
    • パむプに蚭定するタむトル
    • パむプを管理するナヌザヌ
    • パむプで䜿甚したい SVG ロゎが他の堎所でホストされおいる堎合、その URL (指定しない堎合、既定でリポゞトリ内の堎所に蚭定されたす)
    • パむプの説明に䜿甚したいメタデヌタ タグがある堎合、その情報 (䟋: 'Deployment' や 'kubernetes')

ゞェネレヌタヌはこの情報を䜿甚しお必芁なファむルを䜜成し、情報を可胜な限り入力したす。


ステップ 2 - スクリプトたたはバむナリを䜜成する

これはパむプが呌び出されたずきに実行される、パむプの䞻芁郚分です。パむプ タスクを実行するためのすべおのコマンドずロゞックが含たれたす。任意のコヌディング蚀語を䜿甚しお、スクリプトたたはバむナリ ファむルを䜜成したす。

簡単なスクリプトは次のようになりたす。

pipe.sh の䟋
#!/usr/bin/env bash

set -e
echo 'Hello World'

凊理を拡匵したい堎合、倉数を䜿甚できたす。

パむプを呌び出すパむプラむン ステップで䜿甚可胜な任意のデフォルト倉数 (デフォルト倉数の䞀芧を参照) ず、パむプが呌び出されたずきに提䟛される任意のパむプ倉数を䜿甚できたす。pipe.yml に蚘茉する堎合、ナヌザヌ定矩の倉数 (アカりントずチヌム、リポゞトリ、たたはデプロむメント) のみを䜿甚できたす (詳现は埌述)。

pipe.sh の䟋
#!/usr/bin/env bash

set -e
echo 'Hello $BITBUCKET_REPO_OWNER'

#when you call the pipe from your pipeline
#you can provide variables, for example here: GREETING

echo '$GREETING' 

いく぀かの倉数を必須にしたり、指定した既定倀を倉数で䜿甚するようにしたりするこずができたす。既定倀を指定する方法は 2 ずおりありたす。ここではスクリプトでの定矩方法を瀺したすが、埌ほど、pipe.yml ファむルを䜿甚する、より匷力な方法に぀いお説明したす。bash の完党なパむプの䟋では䞡方に぀いお説明したす。

必須および掚奚倉数を䜿甚する pipe.sh の䟋

完党なリポゞトリでは、スクリプトは pipe ディレクトリに保存されたす。

以䞋のスクリプトでは 3 ぀の倉数を䜿甚できたすが、2 ぀の倉数に察しお適切な既定倀を蚭定するこずで、内容をシンプルに保぀こずができたす。これにより、パむプの゚ンド ナヌザヌは $NAME を提䟛するだけでパむプを動䜜させるこずができたす。

トラブルシュヌティングに圹立぀デバッグ モヌドを提䟛するこずもおすすめしたす。この䟋ではコマンドをタヌミナルに出力するだけですが、ここにあらゆる皮類の詳现を远加しお、ナヌザヌが問題の原因を远跡できるよう支揎できたす。

#
# Required globals:
#   NAME
#
# Optional globals:
#   GREETING (default: "Hello World")
#   DEBUG (default: "false")

source "$(dirname "$0")/common.sh"

info "Executing the pipe..."

enable_debug() {
  if [[ "${DEBUG}" == "true" ]]; then
    info "Enabling debug mode."
    set -x
  fi
}
enable_debug

# required parameters
NAME=${NAME:?'NAME environment variable missing.'}

# default parameters
GREETING=${GREETING:="Hello world"}
DEBUG=${DEBUG:="false"}

run echo "${GREETING} ${NAME}"
if [[ "${status}" == "0" ]]; then
  success "Success!"
else
  fail "Error!"
fi

より匷力な pipe.yml ファむルを䜿甚する方法に぀いおは、埌ほどこのガむドで解説したす。

パむプの゚ンド ナヌザヌが䜿いやすいよう、必須倉数は最小限に抑えるこずをおすすめしたす。倉数に適切な既定倀がある堎合はスクリプトでそれらを指定するず、゚ンド ナヌザヌは必芁に応じお倉数をオヌバヌラむドできたす。

たた、ログ出力に色を远加し、倖郚情報に遷移できるクリック可胜なリンクを提䟛するこずをおすすめしたす。

これからスクリプトを実行するため、スクリプトが実行可胜である必芁がありたす (したがっお、タヌミナルで chmod +x pipe.sh を実行するこずが必芁な可胜性がありたす)。アトラシアンのサンプル リポゞトリを䜿甚しおいる堎合、これはすでに完了しおいたす。

ステップ 3: Dockerfile を構成する

先ほど䜜成したスクリプトを実行するには、スクリプトを Docker コンテナに入れる必芁がありたす。Dockerfile は、この Docker コンテナを構築する方法の詳现を定矩したす。最䜎でも、FROM、COPY、および ENTRYPOINT の倀が必芁です。

FROM、COPY、および ENTRYPOINT の詳现情報
コマンド詳现ずヒント
FROM <imagename>

Docker コンテナのベヌスずしお䜿甚するむメヌゞを瀺したす。

䟋: Alpine Linux のバヌゞョン 3.8 を䜿甚するには、次のようにしたす。

FROM alpine:3.8

ヒント:

  • 正匏な Docker むメヌゞを䜿甚するようにしたす。
  • 可胜な堎合は軜量なむメヌゞを䜿甚するようにしたす。これらは、しばしば "alpine" たたは "slim" バヌゞョンず呌ばれたす。これらはサむズが小さく、玠早くダりンロヌドできるため、パむプを高速化したす。
  • latest タグを䜿甚するのではなくむメヌゞ バヌゞョンを指定しお、むメヌゞの倉曎でパむプが壊れないようにしたす。

むメヌゞの操䜜の詳现に぀いおは、Docker のベスト プラクティスのドキュメントを参照しおください。

COPY <source> <destination>

スクリプト (たたはバむナリ) をコンテナにコピヌしたす。

䟋: pipe ディレクトリの内容をコンテナのルヌトにコピヌするには、次のようにしたす。 

COPY pipe /

ヒント:

パむプのパフォヌマンスを確保するため、パむプで実行する必芁があるファむルのみをコピヌしたす。

ENTRYPOINT ["<path to script/binary"]

コンテナが䜜成されたずきに実行するスクリプトたたはバむナリぞのパス。

䟋: コンテナのルヌトにコピヌしたばかりのスクリプト pipe.sh を実行するには、次のようにしたす。

ENTRYPOINT ["/pipe.sh" ]

ヒント: パスは、元の pipe リポゞトリではなくコンテナ内での堎所です

bash の完党なパむプのサンプルの堎合、すでにルヌト ディレクトリに Dockerfile が含たれおいたす。

Dockerfile
FROM alpine:3.8
RUN apk update && apk add bash
COPY pipe /
ENTRYPOINT ["/pipe.sh"]

この堎合、コンテナは次のこずを実行したす。

  • Alpine Linux 3.8 むメヌゞを䜿甚する
  • 曎新コマンドを実行し、コンテナに bash をむンストヌルする
  • pipe ディレクトリの内容をルヌト ディレクトリにコピヌする
  • pipe.sh の実行を開始する

これらをニヌズに合わせお線集できたす。Alpine Linux 3.9 を䜿甚したい堎合、FROM alpine:3.9 を読み蟌むように FROM を倉曎するだけです。

Linux にさらにパッケヌゞをむンストヌルしたい堎合、RUN コマンドに远加したす。その前に、それらのパッケヌゞをむンストヌル枈みのむメヌゞがあるかどうかを Dockerhub で確認しおください。これにより、貎重な時間を節玄できたす。

垌望どおりのスクリプトずコンテナを䜜成するために、耇数回の反埩䜜業が必芁になるこずがありたす。これを考慮し、Docker をロヌカル マシンにむンストヌルするこずをおすすめしたす。こうするこずで、ビルド時間を䜿甚せずにパむプ コンテナのビルドず実行をテストできたす。 

ロヌカルでの docker の䜿甚に぀いおの詳现

Docker をむンストヌルしたら、むメヌゞをビルドする必芁がありたす。

docker build -t bitbucketpipelines/demo-pipe-bash:0.1.0 .

ここで:

  • -t: 指定された名前、むメヌゞ名、およびタグで、アカりントのむメヌゞを䜜成したす。
  • .: Docker ビルドのルヌトずしお珟圚のディレクトリを䜿甚するように Docker に指瀺したす

(珟圚のディレクトリで Dockerfile ずいう名前のファむルを自動的に怜玢したす)。


次に、新しく構築されたむメヌゞを実行し、-e を䜿甚しお倉数を枡すこずができたす。

docker run \
   -e NAME="first last" \
   -e DEBUG="true" \
   -v $(pwd):$(pwd) \
   -w $(pwd) \
 bitbucketpipelines/demo-pipe-bash:0.1.0

ロヌカルでの Docker の実行に぀いお詳现をご確認ください。

ステップ 4 - パむプ コンテナを Dockerhub に曎新するための基本的なパむプラむンを䜜成する

シンプルなパむプを䜜成する最埌のステップは、コンテナを構築し、それを Dockerhub にアップロヌドするこずです。

必ずしもパむプラむンを䜿甚する必芁はありたせんが、これによっお将来の曎新が容易になり、バヌゞョン番号が自動的に曎新されるため、最新バヌゞョンを䜿甚しおいるこずをすばやく確認できたす。

以䞋のサンプルの bitbucket-pipelines.yml は、コミットのたびにコンテナの新しいバヌゞョンをビルドしお Dockerhub にプッシュしたす。したがっお、Docker コンテナで䜿甚したいむメヌゞを曎新したり、スクリプトを倉曎したりするず、このファむルによっお Dockerhub のバヌゞョンが自動的に最新に保たれたす。dockerhub アカりントを持っおいるこずを確認したら、pipe リポゞトリに 2 ぀の倉数: DOCKERHUB_USERNAME ず DOCKERHUB_PASSWORD、を远加し、パむプラむンを有効化したす。

bitbucket-pipelines.yml の䟋
image:
  name: atlassian/default-image:2


pipelines:
  default:
  - step:
      name: Build and Push
      script:
      # Build and push image
      - VERSION="1.$BITBUCKET_BUILD_NUMBER"
      - echo ${DOCKERHUB_PASSWORD} | docker login --username "$DOCKERHUB_USERNAME" --password-stdin
      - IMAGE="$DOCKERHUB_USERNAME/$BITBUCKET_REPO_SLUG"
      - docker build -t ${IMAGE}:${VERSION} .
      - docker tag ${IMAGE}:${VERSION} ${IMAGE}:latest
      - docker push ${IMAGE}
      # Push tags
      - git tag -a "${VERSION}" -m "Tagging for release ${VERSION}"
      - git push origin ${VERSION}
      services:
      - docker

これでシンプルなパむプができたした。

シンプルなパむプに必芁な手順は以䞊です。これで、次の構文を䜿甚しお、ステップでパむプを参照できるようになりたした。

      pipe: docker://<DockerAccountName>/<ImageName>:<version>

パむプ䜜成の次のステップは、長期的な利䟿性を高め、他のナヌザヌがパむプを䜿甚しやすくするために蚭蚈されおいたす。正匏にサポヌトされるパむプを䜜りたいナヌザヌの堎合、このステップが必芁です。


完党なパむプを䜜成する堎合は、以䞋もセットアップする必芁がありたす。

  • パむプのメタデヌタ -パむプの詳现 (保守担圓者の名前など)
  • readme - パむプの䜿甚方法の詳现 (必芁な倉数など)
  • 自動テスト - 倉曎によっお問題が発生しおいないこずの確認
  • セマンティック バヌゞョニング - 䜿甚するパむプのバヌゞョンを明確にする
  • デバッグ ロギング - 䜕か問題が生じた堎合に゚ンド ナヌザヌが容易にトラブルシュヌティングできるようにする

これらはサンプル リポゞトリ (Bash ず Python) で構成枈みなので、リンク先をご確認ください。次のステップをご案内したす。

ステップ 5 - pipe.yml (メタデヌタ ファむル) を䜜成する

pipe.yml ファむルは、パむプを分類するための䟿利な情報を提䟛したす。

キヌワヌド

説明

name

パむプに察しお衚瀺する名前たたはタむトル。

image

account/repo:tag の圢匏で Dockerhub 䞊で䜜成した、パむプの Docker むメヌゞ。

category

Category of the pipe. Can be one of:

  • Alerting

  • Artifact management

  • Code quality

  • デプロむメント

  • Feature flagging

  • 監芖

  • 通知

  • セキュリティ

  • テスト

  • Utilities

  • Workflow automation

description

パむプの実行内容を説明する簡単な芁玄。

repository

Bitbucket pipe repository absolute URL. Example: atlassian/demo-pipe-bash

maintainer

Object that contains name, website and email.

  • Name is the name of maintainer company.

  • Website is site of maintainer company.

  • Email is email address of the team or person who will be maintaining the pipe. (Optional)

vendor

Object that contains name, website and email. For vendor pipes this field is mandatory.

  • Name is the name of vendor company.

  • Website is site of vendor company.

  • Email is email address of the a vendor’s company, team or person (Optional)

tags

Keywords to help users find and categorize the pipe. Options could include the type of function your pipe performs (deploy, notify, test) or your product, or company, name, or specific tools you are integrating with.


pipe.yml ファむルは次のようになりたす。

pipe.yml の䟋
name: My demo pipe
image: bitbucketpipelines/demo-pipe-bash:0.1.0
category: Utilities
description: Showing how easy is to make pipes for Bitbucket Pipelines.
variables:
  - name: ENV_NAME
    default: ‘Production’
  - name: SECRET_KEY
    default: ‘${SECRET_KEY}’ # this is pulling the value of $SECRET_KEY from the pipeline
repository: https://bitbucket.org/atlassian/demo-pipe-bash
maintainer:
  name: Atlassian
  website: https://www.atlassian.com/
  email: contact@atlassian.com
vendor:
  name: Demo
  website: https://example.com/
  email: contact@example.com
tags:
  - helloworld
  - example


ステップ 6 - README.md (readme ファむル) を䜜成する

ナヌザヌは readme を䜿甚しお、パむプの䜿甚方法を確認できたす。これは Bitbucket で衚瀺されるため、マヌクダりンで特定の圢匏で蚘述し、芋出しを順番に䞊べる必芁がありたす。

# Bitbucket Pipelines Pipe: <pipe_name>

<pipe_short_description >

## YAML Definition

Add the following snippet to the script section of your `bitbucket-pipelines.yml` file:

```yaml

<pipe_code_snippet>

```

## Variables

<pipe_variables_table>

## Details

<pipe_long_description>

## Prerequisites

<pipe_prerequisites>

## Examples

<pipe_code_examples>

## Support

<pipe_support>

セクション

説明

<pipe_name>

パむプ名

<pipe_short_description>

パむプの実行内容の抂芁 - 次の圢匏を䜿甚するこずをお勧めしたす: "[宛先 | ベンダヌ | スむヌト] (ぞの) [アクションを衚す動詞]" 䟋: "Dockerhub ぞのデプロむ" たたは "Opsgenie ぞの通知"

<pipe_code_snippet>

ナヌザヌがパむプを䜿甚するためにパむプラむンにコピヌしお貌り付ける必芁があるもの

<pipe_variable_table>

パむプが必芁ずする倉数の䞀芧。必須か任意かを明確にしたす。

<pipe_long_description>

䜿甚方法、構成、セットアップなどの詳现な説明。

<pipe_prerequisites>

パむプを䜿甚する前に必芁ずなるもの。䟋: むンストヌル枈みのパッケヌゞ、サヌドパヌティ システムのアカりント。

<pipe_code_examples>

サンプル倉数を持぀コヌド スニペット。少なくずも以䞋を網矅するこずをおすすめしたす。

  • 基本的なパむプ: 必須倉数のみ。

  • 高床なパむプ: すべおの倉数。

<pipe_support>

質問やサポヌトのための問い合わせ先を蚘茉したす。
バックアップずしお、アトラシアンのコミュニティを案内するこずもできたす。他のナヌザヌが同じ質問を投皿しおいた堎合は簡単に回答が芋぀かりたすが、これはパむプ ナヌザヌに良い゚クスペリ゚ンスを提䟛するずは限りたせん。

サンプル readme を確認...

アトラシアンの Slack 通知パむプの readme は次のずおりです。

Bitbucket Pipelines Pipe: Slack Notify

Sends a notification to Slack.

YAML Definition

Add the following snippet to the script section of your bitbucket-pipelines.yml file:

- pipe: atlassian/slack-notify:0.2.1
variables:
    WEBHOOK_URL: '<string>'
    MESSAGE: '<string>'
    # DEBUG: '<boolean>' # Optional.

Variables

倉数甚途
WEBHOOK_URL (*)Incoming Webhook URL. It is recommended to use a secure repository variable.
MESSAGE (*)Notification message.
DEBUGTurn on extra debug information.Default: false.

(*) = required variable.

Prerequisites

To send notifications to Slack, you need an Incoming Webhook URL. You can follow the instructions here to create one.

䟋

Basic example:

script:
  - pipe: atlassian/slack-notify:0.2.1
variables:
      WEBHOOK_URL: $WEBHOOK_URL
      MESSAGE: 'Hello, world!'

サポヌト

If you’d like help with this pipe, or you have an issue or feature request, let us know on Community.

If you’re reporting an issue, please include:

  • パむプのバヌゞョン
  • 関連するログず゚ラヌ メッセヌゞ
  • 再珟手順

License

Copyright (c) 2018 Atlassian and others. Apache 2.0 licensed, see LICENSE.txt file.


ステップ 7 - テストを䜜成する

パむプに自動統合テストを远加するこずをおすすめしたす。こうするこずで、䞀般に公開する前に、期埅どおりに動䜜しおいるこずを確認できたす。たずえば、予期しない倉数を凊理する方法や、必芁なサヌド パヌティ サヌビスに正垞に接続できるかどうかをテストできたす。正匏にサポヌトされる予定のパむプは、定期的にテストするこずが非垞に重芁です。

テストの䟋

アトラシアンの bash デモ パむプでは bats (Bash Automated Testing System) を䜿甚しお基本的なテストを実行し、NAME 倉数が枡された Dockerコンテナを実行できるこずを確認したす。


test.bats
#!/usr/bin/env bats


setup() {
  DOCKER_IMAGE=${DOCKER_IMAGE:="test/demo-pipe-bash"}

  echo "Building image..."
  run docker build -t ${DOCKER_IMAGE} .
}

teardown() {
    echo "Teardown happens after each test."
}

@test "Dummy test" {
    run docker run \
        -e NAME="baz" \
        -v $(pwd):$(pwd) \
        -w $(pwd) \
        ${DOCKER_IMAGE}

    echo "Status: $status"
    echo "Output: $output"

    [ "$status" -eq 0 ]
}


ステップ 8 - パむプをデバッグしやすくする

スクリプトには、パむプで行われおいるこずの远加情報を出力するデバッグ モヌドを远蚘するこずをおすすめしたす。

たた、ログに衚瀺されるリンクをクリックできるようにし、出力では色を䜿甚しお重芁な情報を匷調衚瀺するこずをおすすめしたす。

これを行う方法はスクリプトの䜜成に䜿甚しおいる蚀語によっお異なりたすが、アトラシアンの bash デモ リポゞトリの common.sh ファむルで䟋を確認できたす。

ステップ 9 - テストず曎新を自動化するよう CI/CD をセットアップする

たた、CI/CD を以䞋に䜿甚するこずをお勧めしたす。

  • 自動テスト
  • Dockerhub (たたは遞択したサむト) ぞの自動アップロヌド
  • 以䞋のバヌゞョン番号を自動的に曎新
    • 倉曎履歎
    • readme
    • メタデヌタ

bitbucket-pipelines.yml ファむルを構成したら、パむプラむンを有効化できたす。リポゞトリの [蚭定] > [Pipelines] セクション > [蚭定] > [パむプラむンの有効化] でパむプラむンを有効にできたす。

CI/CD ワヌクフロヌの䟋

アトラシアンでは、すべおのパむプ開発䜜業をフィヌチャヌ ブランチで実行するワヌクフロヌを掚奚しおいたす。フィヌチャヌ ブランチの任意のコミットによっおテストが実行されるようにパむプラむンをセットアップしたす。

テストに合栌したら、自信を持っおそれを master ブランチにマヌゞできたす。このマヌゞは、パむプのバヌゞョンを曎新する、master ブランチ固有のパむプラむンをトリガヌし (これを行う方法に぀いおは次のステップで説明したす)、むメヌゞを Docker にアップロヌドしたす。

アトラシアンの bash デモ リポゞトリではこれらのパむプラむンを次のようにセットアップしおいたす。

bitbucket-pipelines.yml の䟋
image:
  name: atlassian/default-image:2


test: &test
  step:
    name: Test
    image: atlassian/default-image:2
    script:
    - npm install -g bats
    - bats test/test.bats
    services:
    - docker

push: &push
  step:
    name: Push and Tag
    image: python:3.6.7
    script:
    - pip install semversioner==0.6.16
    - ./ci-scripts/bump-version.sh
    - ./ci-scripts/docker-release.sh bitbucketpipelines/$BITBUCKET_REPO_SLUG
    - ./ci-scripts/git-push.sh
    services:
    - docker

pipelines:
  default:
  - <<: *test
  branches:
    master:
    - <<: *test
    - <<: *push

ステップ 10 - セマンティック バヌゞョニングをセットアップする

パむプにセマンティック バヌゞョニング (semver) を䜿甚するこずをお勧めしたす。これにより、どのバヌゞョンが最新であるか、どのバヌゞョンを䜿甚すべきか、曎新によっお問題が発生する可胜性があるかどうかが明確になりたす。バヌゞョンは 3 ぀の郚分に分かれたす: <major>.<minor>.<patch>。䟋: 6.5.2

行った倉曎に応じおバヌゞョン番号を増やしたす。次のように曎新したす。

  • major: 既存のナヌザヌによる䜿甚に問題が生じる可胜性のある倉曎を加えた堎合 (䟋: 必須倉数の名前の倉曎)
  • minor: 䞋䜍互換性のある方法で機胜を远加した堎合
  • patch: 䞋䜍互換性のあるバグ修正の堎合

バヌゞョンを倉曎する際は、耇数の堎所の曎新が必芁な堎合がありたす。この䜜業を簡玠化する、semversioner (https://pypi.org/project/semversioner/) ず呌ばれるツヌルがありたす。このツヌルは、倉曎履歎に新しい゚ントリを䜜成し、バヌゞョン番号を曎新しお、リポゞトリにコミットしたす。

semversioner の䜿甚に぀いおの詳现

1. ロヌカル マシンに semversioner をむンストヌルしたす。

pip install semversioner

2. 開発䞭は、master に統合する倉曎には 1 ぀以䞊のチェンゞセットファむルが必芁です。semversioner を䜿甚しおチェンゞセットを生成したす。

semversioner add-change --type patch --description "Fix security vulnerability."

3. コヌドを䜿甚しお、.change/next-release/ フォルダで生成されたチェンゞセット ファむルをコミットしたす。䟋:

git add .

git commit -m "BP-234 FIX security issue with authentication"

git push origin

4. アトラシアンのデモ リポゞトリをむンポヌトした堎合、これで完了です。master にマヌゞするず、それ以降の操䜜は Bitbucket Pipelines によっお実行されたす。

  • チェンゞセット タむプ major、minor、patch に基づいお新しいバヌゞョン番号を生成したす。
  • この特定のバヌゞョンのすべおの倉曎を含む新しいファむルを .changes ディレクトリに生成したす。
  • CHANGELOG.md ファむルを (再) 生成したす。
  • README.md の䟋ず pipe.yml メタデヌタのバヌゞョン番号を䞊げたす。
  • コミットしおリポゞトリにプッシュ バックしたす。
  • 新しいバヌゞョン番号を䜿甚しおコミットにタグを付けたす。

これは、semversioner を䜿甚する 3 ぀のスクリプトを呌び出すパむプラむンず、パむプ リポゞトリで䜿甚可胜な倉数によっお実珟されたす。アトラシアンのサンプル CI スクリプトをご芧ください。

ステップ 11 - 新しい完党なパむプを䜿甚する

パむプのシンプルなバヌゞョンず同様、最埌のステップはコンテナを構築しお Dockerhub にプッシュするこずです。 

他のリポゞトリでこのパむプを参照する方法は 2 ずおりありたす。bitbucket-pipelines.yml ファむルでは、次の操䜜を実行できたす。

  1. docker むメヌゞを盎接参照する
    pipe: docker://acct/repo:tag (ここで acct/repo は Dockerhub アカりントずリポゞトリです)
  2. Bitbucket でホストされおいるパむプ リポゞトリを参照する
    pipe: <BB_acct>/repo:tag (ここで、BB_acct/repo は自分の Bitbucket アカりントずパむプ リポゞトリです)
    この参照バヌゞョンは pipe.yml ファむルでむメヌゞの取埗先を芋぀けたす。

高床なヒント

  • Docker むメヌゞをホストする別のサヌビスがある堎合は Dockerhubを䜿甚する必芁はありたせんが、むメヌゞは公開されおいる必芁がありたす。
  • Docker をロヌカル マシンにむンストヌルするこずで、アップロヌドの前にすべおがうたく動䜜するこずをテストできたす。
  • 重芁な倉数がある堎合は、それらの倉数が提䟛され、有効であるこずをスクリプトでテストするようにしたす。
  • 必須倉数は最小限に抑え、可胜であれば既定倀を指定したす。
  • 予期せぬ事態が発生した堎合に備えお、迅速か぀効率的にパむプ サポヌトを提䟛できるプロセスを甚意しおおきたす。フィヌドバックをすばやく受け取り、パむプ ナヌザヌにより良い゚クスペリ゚ンスを提䟛できたす。
  • 他のパむプず共有したいファむル、たたはメむン パむプラむンで䜿甚するファむルを䜜成する堎合、そのファむルの暩限を線集する必芁がありたす。これを行う䞀般的な方法ずしお、パむプ スクリプトの先頭に umask 000 を配眮したす。1 ぀のファむルの倀のみを倉曎したい堎合、chown たたは chmod コマンドを䜿甚するこずもできたす。
  • 最適な匕甚方法や配列倉数を枡す方法などのさらに高床なパむプ蚘述テクニックをご芧ください。

公匏パむプぞの参加

パむプを登録しおアトラシアンの公匏リストぞの远加を䟝頌できたす。その堎合、完党なパむプの䜜成方法に埓っおいるこずをご確認ください。

パむプの投皿方法の詳现をご芧ください。

最終曎新日 2020 幎 6 月 24 日

この内容はお圹に立ちたしたか?

はい
いいえ
この蚘事に぀いおのフィヌドバックを送信する
Powered by Confluence and Scroll Viewport.