MoriKen's Journal

MoriKen's Journal

アラサー社会人博士による徒然日記。技術についてつらつら。だけだとコンテンツが貧弱なので、会社公認で大学院博士課程に進学した経緯や、独学でTOEICを475→910にしたノウハウを共有します。

Buildfarm+bloomで自作ROS pkg をaptやrosdepで取得可能にする!②リリース編

Sponsored Link

前回の記事で、ようやくリリースの前準備が完了しました。

www.moriken254.com

今回は、実際に bloom を使ってリリースを行う手順を示します。

手順の流れは、目次を参照下さい。いっぱいあるように見えますが、かなりの部分は bloom がやってくれるので、そうビビる必要はありません ^^

release 後の作業を事前確認

いよいよリリースツール、bloomを使います!

f:id:MoriKen254:20190609211332j:plain


bloom コマンド実行

さ、bloomのリリースコマンドを叩きます。

$ bloom-release --rosdistro kinetic --track kinetic timed_roslaunch --edit

初めてなので、timed_roslaunchのリリースリポジトリなんてねーよゴルァ!と言われます。お初なんですから当然です。気にせず眺めてみましょう。

ROS Distro index file associate with commit '42bdb05c4d8fe3daac5c17751138f88f47b748c8'
New ROS Distro index url: 'https://raw.githubusercontent.com/ros/rosdistro/42bdb05c4d8fe3daac5c17751138f88f47b748c8/index.yaml'
Specified repository 'timed_roslaunch' is not in the distribution file located at 'https://raw.githubusercontent.com/ros/rosdistro/42bdb05c4d8fe3daac5c17751138f88f47b748c8/kinetic/distribution.yaml'
Did you mean one of these: 'rgbd_launch'?
Could not determine release repository url for repository 'timed_roslaunch' of distro 'kinetic'
You can continue the release process by manually specifying the location of the RELEASE repository.
To be clear this is the url of the RELEASE repository not the upstream repository.
For release repositories on GitHub, you should provide the `https://` url which should end in `.git`.
Here is the url for a typical release repository on GitHub: https://github.com/ros-gbp/rviz-release.git

別 distribution 探索

別distributionでも探してくれます。すげー。まぁ、いないんですけど。

==> Looking for a release of this repository in a different distribution...
No reasonable default release repository url could be determined from previous releases.

というわけで、諦めてくれたようなので、ここで地道に手打ちでリリースリポジトリを指定します。指定するリリースリポジトリは空のものを作っておきましょう。一般的にリリースリポジトリ名は、pkg名-releaseです。

Release repository url [press enter to abort]: https://github.com/MoriKen254/timed_roslaunch-release.git

release リポジトリの更新

何やらローカルのtmpの下にクローンし始めます。

f:id:MoriKen254:20190609212535j:plain


==> Fetching 'timed_roslaunch' repository from 'https://github.com/MoriKen254/timed_roslaunch-release.git'
Cloning into '/tmp/tmpllWPdK'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
Checking connectivity... done.

ここからが本番です。リリースするリポジトリの情報をbloomに教えてあげましょう。

f:id:MoriKen254:20190609213208j:plain


アーカイブ上の名前はtimed_roslaunchとします。

Creating track 'kinetic'...
Repository Name:
  upstream
    Default value, leave this as upstream if you are unsure
  <name>
    Name of the repository (used in the archive name)
  ['upstream']: timed_roslaunch

ソースリポジトリのURIです。https://github.com/MoriKen254/timed_roslaunch.git を指定します。

Upstream Repository URI:
  <uri>
    Any valid URI. This variable can be templated, for example an svn url
    can be templated as such: "https://svn.foo.com/foo/tags/foo-:{version}"
    where the :{version} token will be replaced with the version for this release.
  [None]: https://github.com/MoriKen254/timed_roslaunch.git

先程指定したリポジトリのバージョン管理システムを指定します。timed_roslaunchの場合はgitです。

Upstream VCS Type:
  svn
    Upstream URI is a svn repository
  git
    Upstream URI is a git repository
  hg
    Upstream URI is a hg repository
  tar
    Upstream URI is a tarball
  ['git']: git

バージョン番号の指定方法です。デフォルトのautoにしておけば、package.xmlから勝手に抽出してくれますので、ここはデフォルトのまま未入力でエンター。

Version:
  :{ask}
    This means that the user will be prompted for the version each release.
    This also means that the upstream devel will be ignored.
  :{auto}
    This means the version will be guessed from the devel branch.
    This means that the devel branch must be set, the devel branch must exist,
    and there must be a valid package.xml in the upstream devel branch.
  <version>
    This will be the version used.
    It must be updated for each new upstream version.
  [':{auto}']: 

リリースタグの指定です。基本はバージョンのタグと同一で良いので、ここもデフォルトのversionのまま無記入でエンター。

Release Tag:
  :{none}
    For svn and tar only you can set the release tag to :{none}, so that
    it is ignored.  For svn this means no revision number is used.
  :{ask}
    This means the user will be prompted for the release tag on each release.
  :{version}
    This means that the release tag will match the :{version} tag.
    This can be further templated, for example: "foo-:{version}" or "v:{version}"
    
    This can describe any vcs reference. For git that means {tag, branch, hash},
    for hg that means {tag, branch, hash}, for svn that means a revision number.
    For tar this value doubles as the sub directory (if the repository is
    in foo/ of the tar ball, putting foo here will cause the contents of
    foo/ to be imported to upstream instead of foo itself).
  [':{version}']: 

リポジトリのブランチです。今回のケーススタディでのtimed_roslaunchの場合はkinetic-develという名称のブランチです。

Upstream Devel Branch:
  <vcs reference>
    Branch in upstream repository on which to search for the version.
    This is used only when version is set to ':{auto}'.
  [None]: kinetic-devel

ROS distribution を指定します。リリースコマンドで指定していたkineticがデフォルトで指定されるので、そのままエンター。

ROS Distro:
  <ROS distro>
    This can be any valid ROS distro, e.g. indigo, kinetic, lunar, melodic
  ['kinetic']:     

パッチのディレクトリを指定できるらしい。基本はデフォルトで良いらしいので、エンター。

Patches Directory:
  :{none}
    Use this if you want to disable overlaying of files.
  <path in bloom branch>
    This can be any valid relative path in the bloom branch. The contents
    of this folder will be overlaid onto the upstream branch after each
    import-upstream.  Additionally, any package.xml files found in the
    overlay will have the :{version} string replaced with the current
    version being released.
  [None]: 

ros-distro への登録

ここまで登録した内容をros-distroにプッシュします。

f:id:MoriKen254:20190609212928j:plain


ここも基本はデフォルトで良いらしいので、エンター。

Release Repository Push URL:
  :{none}
    This indicates that the default release url should be used.
  <url>
    (optional) Used when pushing to remote release repositories. This is only
    needed when the release uri which is in the rosdistro file is not writable.
    This is useful, for example, when a releaser would like to use a ssh url
    to push rather than a https:// url.
  [None]: 

以上で、kinetic のトラックが作成されます。

Created 'kinetic' track.

release 前の事前確認

f:id:MoriKen254:20190609213500j:plain


本当に push できるのかまずは確認するっぽい。

==> Testing for push permission on release repository

リモートリポジトリの情報を確認します。

==> git remote -v
origin  https://github.com/MoriKen254/timed_roslaunch-release.git (fetch)
origin  https://github.com/MoriKen254/timed_roslaunch-release.git (push)

push 時の挙動を確認する。

==> git push --dry-run
warning: push.default is unset; its implicit value has changed in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the traditional behavior, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

When push.default is set to 'matching', git will push local branches
to the remote branches that already exist with the same name.

Since Git 2.0, Git defaults to the more conservative 'simple'
behavior, which only pushes the current branch to the corresponding
remote branch that 'git pull' uses to update the current branch.

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

Username for 'https://github.com': MoriKen254
Password for 'https://MoriKen254@github.com': 
To https://github.com/MoriKen254/timed_roslaunch-release.git
   19e4882..0df3439  master -> master

実際のリリース処理を開始する

ようやくリリースです笑。

f:id:MoriKen254:20190609213858j:plain


==> Releasing 'timed_roslaunch' using release track 'kinetic'

以下が実際のコマンド。

==> git-bloom-release kinetic
Processing release track settings for 'kinetic'
Checking upstream devel branch for package.xml(s)
Cloning into '/tmp/tmp4Jv15O/upstream'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 162 (delta 6), reused 9 (delta 4), pack-reused 147
Receiving objects: 100% (162/162), 26.16 KiB | 0 bytes/s, done.
Resolving deltas: 100% (73/73), done.
Checking connectivity... done.
Looking for packages in 'kinetic-devel' branch... found 'timed_roslaunch'.
Detected version '0.1.1' from package(s): ['timed_roslaunch']

Executing release track 'kinetic'

アーカイブの作成

まだローカルでの作業です。

f:id:MoriKen254:20190609220219j:plain


ソースリポジトリを「tar.gz」形式でアーカイブしている模様です。

これは、実際に Buildfarm が行う作業を真似するために、敢えてアーカイブを作成し、解凍するという冗長な処理をしているのだと思います。

==> bloom-export-upstream /tmp/tmp4Jv15O/upstream git --tag 0.1.1 --display-uri https://github.com/MoriKen254/timed_roslaunch.git --name timed_roslaunch --output-dir /tmp/tmpl4sxFc
Checking out repository at 'https://github.com/MoriKen254/timed_roslaunch.git' to reference '0.1.1'.
Exporting to archive: '/tmp/tmpl4sxFc/timed_roslaunch-0.1.1.tar.gz'
Cloning into '/tmp/tmpfDAmvC'...
warning: --depth is ignored in local clones; use file:// instead.
done.
md5: 386c49c2a9e913c13f8502c8a30df847

アーカイブ解凍→debian テンプレート 作成

解凍から、debian テンプレート 作成までチェックします。

f:id:MoriKen254:20190609220634j:plain


==> git-bloom-import-upstream /tmp/tmpl4sxFc/timed_roslaunch-0.1.1.tar.gz  --release-version 0.1.1 --replace
Creating upstream branch.
Importing archive into upstream branch...
Creating tag: 'upstream/0.1.1'
I'm happy.  You should be too.

bloom が「私、嬉しいわ」って言ってる。そして「あなたもよね?そうよね?」って言いよってくる。うわーぁぁあああ。

う、嬉しいよ(いや本当に)!

って、まず upstream をソースに新しいブランチを作成している。ほう。

==> git-bloom-generate -y rosrelease kinetic --source upstream -i 0
Releasing package: ['timed_roslaunch']
Releasing package 'timed_roslaunch' for 'kinetic' to: 'release/kinetic/timed_roslaunch'

xenialdebian files を作るとな。そして、'debian/kinetic/timed_roslaunch' を作成。このブランチには、新たにdebian ディレクトリが作成されていて、ここに debian 用のテンプレートが格納されるようです。

==> git-bloom-generate -y rosdebian --prefix release/kinetic kinetic -i 0 --os-name ubuntu
Generating source debs for the packages: ['timed_roslaunch']
Debian Incremental Version: 0
Debian Distributions: ['xenial']
Releasing for rosdistro: kinetic

Pre-verifying Debian dependency keys...
Running 'rosdep update'...
All keys are OK

Placing debian template files into 'debian/kinetic/timed_roslaunch' branch.

==> Placing templates files in the 'debian' folder.

debian モジュール作成

実際に debian モジュールを作成する模様です。

Generating 'xenial' debian for package 'timed_roslaunch' at version '0.1.1-0'
Generating debian for xenial...
No homepage set, defaulting to ''
No historical releaser history, using current maintainer name and email for each versioned changelog entry.
Package 'timed-roslaunch' has dependencies:
Build and Build Tool Dependencies:
  rosdep key           => xenial key
  catkin               => ['ros-kinetic-catkin']
  rospy                => ['ros-kinetic-rospy']
  roslaunch            => ['ros-kinetic-roslaunch']
==> In place processing templates in 'debian' folder.
Expanding 'debian/copyright.em' -> 'debian/copyright'
Expanding 'debian/compat.em' -> 'debian/compat'
Expanding 'debian/rules.em' -> 'debian/rules'
Expanding 'debian/gbp.conf.em' -> 'debian/gbp.conf'
Expanding 'debian/changelog.em' -> 'debian/changelog'
Expanding 'debian/control.em' -> 'debian/control'
Expanding 'debian/source/format.em' -> 'debian/source/format'
Expanding 'debian/source/options.em' -> 'debian/source/options'
Creating tag: debian/ros-kinetic-timed-roslaunch_0.1.1-0_xenial

Successfully generated 'xenial' debian for package 'timed_roslaunch' at version '0.1.1-0'

おぉ、なんか成功したらしいです笑。

続いていくつが作業をしています。

==> git-bloom-generate -y rosdebian --prefix release/kinetic kinetic -i 0 --os-name debian --os-not-required
No platforms defined for os 'debian' in release file for the 'kinetic' distro. This os was not required; continuing without error.

うーん。よくわかりませんが、とりあえず無視して次に行っていいのかな。

==> git-bloom-generate -y rosrpm --prefix release/kinetic kinetic -i 0
No platforms defined for os 'fedora' in release file for the 'kinetic' distro.
Not performing RPM generation.

うーん。よくわかりませんが、ここもいいかなと。

Tip: Check to ensure that the debian tags created have the same version as the upstream version you are releasing.
Everything went as expected, you should check that the new tags match your expectations, and then push to the release repo with:
  git push --all && git push --tags  # You might have to add --force to the second command if you are over-writing existing tags
<== Released 'timed_roslaunch' using release track 'kinetic' successfully

なんかアドバイスされたけど、とにかく release track が正常に作成されたって!なんか、bloom すごい!笑

release リポジトリへ push

ここまでの内容は、全てローカルでの確認作業でした。

ようやく、リモートに push することになります。

f:id:MoriKen254:20190609221033j:plain


==> git remote -v
origin  https://github.com/MoriKen254/timed_roslaunch-release.git (fetch)
origin  https://github.com/MoriKen254/timed_roslaunch-release.git (push)
Releasing complete, push to release repository?

Continue [Y/n]? y

おとなしく y と入力です。さぁ、いよいよリリース。

==> Pushing changes to release repository for 'timed_roslaunch'
==> git push --all
Username for 'https://github.com': MoriKen254
Password for 'https://MoriKen254@github.com': 
Counting objects: 44, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (43/43), done.
Writing objects: 100% (44/44), 5.43 KiB | 0 bytes/s, done.
Total 44 (delta 12), reused 0 (delta 0)
remote: Resolving deltas: 100% (12/12), completed with 7 local objects.
To https://github.com/MoriKen254/timed_roslaunch-release.git
   9605992..98dcdd5  debian/kinetic/timed_roslaunch -> debian/kinetic/timed_roslaunch
   67e6ee4..59f5b3d  debian/kinetic/xenial/timed_roslaunch -> debian/kinetic/xenial/timed_roslaunch
   ec448c6..073744d  master -> master
   33aaacd..a4919c9  patches/debian/kinetic/timed_roslaunch -> patches/debian/kinetic/timed_roslaunch
   35db813..b34d7e5  patches/debian/kinetic/xenial/timed_roslaunch -> patches/debian/kinetic/xenial/timed_roslaunch
   abc70e3..a63f682  patches/release/kinetic/timed_roslaunch -> patches/release/kinetic/timed_roslaunch
   1362122..1b2d6c3  release/kinetic/timed_roslaunch -> release/kinetic/timed_roslaunch
<== Pushed changes successfully

==> Pushing tags to release repository for 'timed_roslaunch'

よし、リポジトリが push されました!続いて tag を push します。

==> git push --tags
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/MoriKen254/timed_roslaunch-release.git
 * [new tag]         debian/ros-kinetic-timed-roslaunch_0.1.1-2_xenial -> debian/ros-kinetic-timed-roslaunch_0.1.1-2_xenial
 * [new tag]         release/kinetic/timed_roslaunch/0.1.1-2 -> release/kinetic/timed_roslaunch/0.1.1-2
 * [new tag]         upstream/0.1.1 -> upstream/0.1.1
<== Pushed tags successfully

あぁ、ようやく release リポジトリが完成しました。

ros-distro を fork & PR

ros-distro のリポジトリもクローンして、今回の変更を反映してもらうようにPRを送る処理に進みます。

f:id:MoriKen254:20190609222424j:plain


設定

もう、ひたすらデフォルト、yes で行きましょう。git なので。

==> Generating pull request to distro file located at 'https://raw.githubusercontent.com/ros/rosdistro/42bdb05c4d8fe3daac5c17751138f88f47b748c8/kinetic/distribution.yaml'
Would you like to add documentation information for this repository? [Y/n]? y
==> Looking for a doc entry for this repository in a different distribution...
Using defaults from the doc entry of distribution 'indigo'.
Please enter your repository information for the doc generation job.
This information should point to the repository from which documentation should be generated.
VCS Type must be one of git, svn, hg, or bzr.
VCS type [git]: 
VCS url [https://github.com/MoriKen254/timed_roslaunch.git]: 
VCS version must be a branch, tag, or commit, e.g. master or 0.1.0
VCS version [indigo-devel]: kinetic-devel
Would you like to add source information for this repository? [Y/n]? y
==> Looking for a source entry for this repository in a different distribution...
Using defaults from the source entry of distribution 'indigo'.
Please enter information which points to the active development branch for this repository.
This information is used to run continuous integration jobs and for developers to checkout from.
VCS Type must be one of git, svn, hg, or bzr.
VCS type [git]: 
VCS url [https://github.com/MoriKen254/timed_roslaunch.git]: 
VCS version must be a branch, tag, or commit, e.g. master or 0.1.0
VCS version [indigo-devel]: kinetic-devel
Since you are on github we can add a job to run your tests on each pull request.If you would like to turn this on please see http://wiki.ros.org/buildfarm/Pull%20request%20testing for more information. There is more setup required to setup the hooks correctly. 
Would you like to turn on pull request testing? [y/N]? y
Would you like to add a maintenance status for this repository? [Y/n]? y
Please enter a maintenance status.
Valid maintenance statuses:
- developed: active development is in progress
- maintained: no new development, but bug fixes and pull requests are addressed
- unmaintained: looking for new maintainer, bug fixes and pull requests will not be addressed
- end-of-life: should not be used, will disappear at some point
Status: maintained
You can also enter a status description.
This is usually reserved for giving a reason when a status is 'end-of-life'.
Status Description [press Enter for no change]:
Unified diff for the ROS distro file located at '/tmp/tmp3WPuqi/timed_roslaunch-0.1.1-2.patch':

お、ここで実際に ros-distro にPRする差分を確認できます。

--- 42bdb05c4d8fe3daac5c17751138f88f47b748c8/kinetic/distribution.yaml
+++ 42bdb05c4d8fe3daac5c17751138f88f47b748c8/kinetic/distribution.yaml
@@ -12921,6 +12921,22 @@
       url: https://github.com/ROBOTIS-GIT/ROBOTIS-THORMANG-Tools.git
       version: kinetic-devel
     status: developed
+  timed_roslaunch:
+    doc:
+      type: git
+      url: https://github.com/MoriKen254/timed_roslaunch.git
+      version: kinetic-devel
+    release:
+      tags:
+        release: release/kinetic/{package}/{version}
+      url: https://github.com/MoriKen254/timed_roslaunch-release.git
+      version: 0.1.1-2
+    source:
+      test_pull_requests: true
+      type: git
+      url: https://github.com/MoriKen254/timed_roslaunch.git
+      version: kinetic-devel
+    status: maintained
   timesync_ros:
     doc:
       type: git

うん、いいんじゃないですかね笑。次!

ros-distro の fork

ここからros-distroのリポジトリをforkしてPRって流れに。

f:id:MoriKen254:20190609222745j:plain


まずoauth トークン作れって。そらそーですな。

Looks like bloom doesn't have an oauth token for you yet.
Therefore bloom will require your GitHub username and password just this once.
With your GitHub username and password bloom will create an oauth token on your behalf.
The token will be stored in `~/.config/bloom`.
You can delete the token from that file to have a new token generated.
Guard this token like a password, because it allows someone/something to act on your behalf.
If you need to unauthorize it, remove it from the 'Applications' menu in your GitHub account page.

Would you like to create an OAuth token now [Y/n]? 
GitHub username [nishidalab]: MoriKen254
GitHub password (never stored): 
The token 'ad298882a971af397ffbb38e2ac9bfb6094de614' was created and stored in the bloom config file: '/home/hogehoge/.config/bloom'

満を持して fork です。私の個人アカウントに強制的にforkが走ります。

==> Checking on GitHub for a fork to make the pull request from...
==> Using this fork to make a pull request from: MoriKen254/rosdistro
==> Cloning MoriKen254/rosdistro...
==> mkdir -p rosdistro
==> git init
Initialized empty Git repository in /tmp/Vov88B/rosdistro/.git/
Pull Request Title: timed_roslaunch: 0.1.1-2 in 'kinetic/distribution.yaml' [bloom]
Pull Request Body : 
Increasing version of package(s) in repository `timed_roslaunch` to `0.1.1-2`:

- upstream repository: https://github.com/MoriKen254/timed_roslaunch.git
- release repository: https://github.com/MoriKen254/timed_roslaunch-release.git
- distro file: `kinetic/distribution.yaml`
- bloom version: `0.6.7`
- previous version for package: `null`

リリースまでのソースリポジトリのコミットログが出てきます。黒歴史も笑。

* Modify travis setting.
* Fix timed_roslaunch to add default values
以下略
* Contributors: MoriKen254 hogehoge

ros-distro への PR

はぁ、ようやくPRです。

f:id:MoriKen254:20190609222815j:plain


Open a pull request from 'MoriKen254/rosdistro:bloom-timed_roslaunch-0' into 'ros/rosdistro:master'?
Continue [Y/n]? y
==> git checkout -b bloom-timed_roslaunch-0
Switched to a new branch 'bloom-timed_roslaunch-0'
==> Pulling latest rosdistro branch
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 118493 (delta 2), reused 1 (delta 1), pack-reused 118490
Receiving objects: 100% (118493/118493), 50.43 MiB | 393.00 KiB/s, done.
Resolving deltas: 100% (75344/75344), done.
From https://github.com/ros/rosdistro
 * branch            master     -> FETCH_HEAD
==> git reset --hard 0d0b72dc8853d6aa38e739f761cd7ef2edec30ab
HEAD is now at 0d0b72d rail_face_detection: 1.0.2-0 in 'indigo/distribution.yaml' [bloom] (#19402)
==> Writing new distribution file: kinetic/distribution.yaml

差分追加です。

==> git add kinetic/distribution.yaml

コミット

==> git commit -m "timed_roslaunch: 0.1.1-3 in 'kinetic/distribution.yaml' [bloom]"
[bloom-timed_roslaunch-0 52a6f41] timed_roslaunch: 0.1.1-3 in 'kinetic/distribution.yaml' [bloom]
 1 file changed, 16 insertions(+)

いけ!push だ!

==> Pushing changes to fork
Counting objects: 29302, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (8667/8667), done.
Writing objects: 100% (29302/29302), 17.12 MiB | 2.67 MiB/s, done.
Total 29302 (delta 17344), reused 28291 (delta 16345)
remote: Resolving deltas: 100% (17344/17344), completed with 38 local objects.

そして PR !

remote: Create a pull request for 'bloom-timed_roslaunch-0' on GitHub by visiting:
remote:      https://github.com/MoriKen254/rosdistro/pull/new/bloom-timed_roslaunch-0
remote: 
To https://ad298882a971af397ffbb38e2ac9bfb6094de614:x-oauth-basic@github.com/MoriKen254/rosdistro.git
 * [new branch]      bloom-timed_roslaunch-0 -> bloom-timed_roslaunch-0
<== Pull request opened at: https://github.com/ros/rosdistro/pull/19405

おお!リリースできた!やった!やった!

bloom:「私、嬉しいわ。あなたもよね?」
MoriKen:「えぇ、まじで嬉しいっす!」

どうでもいいっすね笑。

この先は?

これ以降は、以下のような流れです。

f:id:MoriKen254:20190609223743j:plain


  • OpenRobotics の方が ros-distro の PR を承認してくれます。結構レス早いです。
  • Jenkins さんがビルドしてくれます。1, 2日に1回くらい。
  • ドキュメントはでのステータスは ROS Wiki で反映されます。
  • ビルドされたモジュールは、まずは shadow-fixed リポジトリに入ります。
    • 本リリース前に、何かおかしなことが起きないかを確認するためのバッファです。
    • .list を書き換えれば、こちらにあるパッケージを apt で取得できます。
  • 大体2週間くらいすると、本 release されます。
    • ココまでくれば、apt で取得できます。rosdep でも解決できます。気持ちいいです。

今は、ここで扱ったtimed_roslaunchを下記コマンドで取得可能です。

sudo apt install ros-kinetic-timed-roslaunch

おわりに

駆け足でしたが、自作 ROS パッケージのリリース手順を示しました。

あぁ、ros-distro リポジトリも図に示さないと、何やってるのかよくわからない感じになっちゃいましたね汗。

とりあえずたたき台ということで、まずは公開です!

より多くのROSデベロッパの皆さまが、bloomを活用できるようになることを願っています。

www.moriken254.com