ラベル bitbucket の投稿を表示しています。 すべての投稿を表示
ラベル bitbucket の投稿を表示しています。 すべての投稿を表示

2025年6月20日金曜日

Bitbucket で self hosted な Runner を起動する方法

Bitbucket で self hosted な Runner を起動する方法

概要

M1 Mac を Runner にする方法を紹介します
docker で Runner を起動するのが一番簡単なので docker を使います

環境

  • macOS 15.5
  • docker 28.2.2
  • bitbucket runner

Runner の追加

workspace/settings/pipelines/account-runners でワークスペース Runner を追加します
右上の歯車 -> Workspace settings から設定します

Add Runner をクリックします

Runner の設置画面になります

  • System and architecture -> Linux Docker (x86_64)
  • Runner name -> test
  • Runner labels -> self.hosted, linux

で Next をクリックします

docker コマンドが表示されるのでこれをそのまま実行しましょう
認証情報などが含まれているので扱いには注意しましょう

self-hosted Runner を実行するには bitbucket-pipelines.yml に runs-on という定義を追加しなければなりません
ここに先程のラベル情報と同じ情報を記載すれば self-hosted Runner でパイプラインが実行されます

あとは docker コマンドを実行しパイプラインを実行して問題なく Mac 上でパイプラインが実行されることを確認できれば OK です

最後に

無料プランだと50分/月が上限なのでどうしてもパイプラインを流したい場合は self-hosted Runner を構築すると簡単に流せます
ラベルなしの self-hosted Runner は作成することができないっぽいのでどうしても bitbuckt-pipelines.yml を書き換える必要はあるのが面倒であります

参考サイト

2025年6月10日火曜日

bitbucket で push 時にパイプラインを実行する方法

bitbucket で push 時にパイプラインを実行する方法

概要

手動ではなく master push 時にパイプラインを実行する方法を紹介します

環境

  • bitbucket (2025/05/29時点)

bitbucket-pipelines.yml

image: python:3.12.10

pipelines:
  branches:
    master:
      - step:
          name: Install packages and Lint code
          caches:
            - pip
          script:
            - pip install pipenv
            - pipenv install -d
            - pipenv run isort --check --diff .
            - pipenv run black --check .

基本はイメージを選択しあとは実行するコマンドを並べていけば OK です

ビルドが失敗すると自動でメールが送信されます

初回は必ず手動で実行する必要がありそう

bitbucket-pipelines.yml 追加後に

  • 左メニュー -> パイプライン -> Run initial pipeline

で必ず初回は手動実行する必要がありそうです
次回以降は push 時に自動で実行されます

ダメなパターン

pipenv install と pipenv run のステップをわけるとうまくインストールしたパッケージが次に渡らないので素直に同じステップ内で実行しましょう

image: python:3.12.10

pipelines:
  branches:
    master:
      - step:
          name: Install packages
          caches:
            - pip
          script:
            - pip install pipenv
            - which pipenv
            - pipenv install -d
          artifacts:
            - /usr/loca/bin/
            - /root/.local/share/virtualenvs/
      - step:
          name: Lint code
          script:
            - pipenv run isort --check --diff .
            - pipenv run black --check .

最後に

bitbucket の無料枠でも毎月50分であればパイプラインのランナーを使えます
bitbucket の場合作成された pipeline の履歴は消せないようです

参考サイト

2025年4月1日火曜日

renovate を bitbucket で使ってみる

renovate を bitbucket で使ってみる

概要

前回ローカルで renovate を動かしてみました
今回は bitbucket と連携して使ってみます

bitbucket からアプリパスワードの作成

https://bitbucket.org/account/settings/app-passwords/ から作成できます
作成するパスワードに必要な権限は以下のとおりです

  • account -> Account: Read
  • team -> Workspace membership: Read
  • issue:write -> Issues: Write
  • pullrequest:write -> Pull requests: Write

renovate.json の修正

手動で実行するので schedule の部分はいつでも OK にします
特定の時間帯で renovate が PR を作成可能にする場合は時間を指定しましょう

{
  "extends": [
    "config:recommended"
  ],
  "enabledManagers": [
    "pipenv"
  ],
  "packageRules": [
    {
      "description": "Schedule all packages update on Sunday nights (9 PM - 12 AM)",
      "matchManagers": [
        "pipenv"
      ],
      "groupName": "pip dependencies",
      "schedule": ["* * * * *"],
      "automerge": true,
      "automergeType": "branch"
    }
  ],
  "pipenv": {
    "lockFileMaintenance": {
      "enabled": true,
      "schedule": ["* * * * *"]
    },
    "fileMatch": [
      "(^|/)Pipfile$"
    ]
  }
}

package.json の修正

bitbucket のユーザ名と先ほど発行したアプリパスワードを使って認証するように修正します
ユーザ名/パスワードは環境変数で渡せるようにしましょう

{
  "dependencies": {
    "renovate": "^39.222.1"
  },
  "scripts": {
    "renovate": "renovate --platform=bitbucket --username=$BITBUCKET_USERNAME --password=$BITBUCKET_TOKEN team-name/repo-name",
    "renovate_help": "renovate --help"
  }
}

team-name/repo-name の部分は自身の bitbucket 上で管理しているチーム名とリポジトリ名に変更してください
リポジトリ名を指定せずに --autodiscover=true にしても OK ですがリポジトリが大量にある場合は精査に時間がかかるのでリポジトリ名を指定したほうが速いです

トラブルシュート: PR が作成されない場合は

Renovate 用のアカウントを作成する必要があるので作成しましょう
そしてそのアカウントからアプリパスワードを取得し設定します

動作確認

とりあえずローカルで動くか試しましょう
認証情報の部分は適宜変更してください

  • BITBUCKET_USERNAME=name BITBUCKET_TOKEN=password LOG_LEVEL=debug npm run renovate

もしこれで master ブランチ上で更新するべきパッケージがあった場合には MR を作成してくれます

最後に

あとは renovate コマンドを定期的に実行する CI を設定するだけです
bitbucket の場合 Mend という専用のアプリがあるのでこれを使うのが一番簡単です

参考サイト