rabbit-slide-znz-rubykaigi-2025-lt 2025.4.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a97322ce1f916a3c7216e476ff9c226a5146bee5f0e2d4a76518cb86f44bc2c4
4
+ data.tar.gz: 10c713f91a7787b545ef174b236bf254448faa38fb4aaae7aa550761d45313fd
5
+ SHA512:
6
+ metadata.gz: 784b76ca0569b9dc0d6b7184ff0bc233f65e84a2dbcb1b67df737daad99f9d6528e1032bf4190334b0646c15f0e41eb361e717e7e50a6528ec1468188e1f24b7
7
+ data.tar.gz: 4e57371b383b0b4c3c9013f0866ec1574446271a4a69651facb7725203cbed10093386dafdcd47948192cc1dcd313b013b03bb6d6407e169831e0b12d371f118
data/.rabbit ADDED
@@ -0,0 +1,2 @@
1
+ --size 1920,1200
2
+ riscv64.rubyci.org_internal.md
data/README.md ADDED
@@ -0,0 +1,23 @@
1
+ # riscv64.rubyci.org internal
2
+
3
+ RubyKaigi 2025 の LT の発表資料です。
4
+
5
+ ## 作者向け
6
+
7
+ ### 表示
8
+
9
+ rake
10
+
11
+ ### 公開
12
+
13
+ rake publish
14
+
15
+ ## 閲覧者向け
16
+
17
+ ### インストール
18
+
19
+ gem install rabbit-slide-znz-rubykaigi-2025-lt
20
+
21
+ ### 表示
22
+
23
+ rabbit rabbit-slide-znz-rubykaigi-2025-lt.gem
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ # spec.files += Dir.glob("doc/**/*.*")
9
+ # spec.files -= Dir.glob("private/**/*.*")
10
+ # spec.add_runtime_dependency("rabbit-theme-YOUR-THEME")
11
+ end
12
+
13
+ desc "Tag #{spec.version}"
14
+ task :tag do
15
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
16
+ sh("git", "push", "--tags")
17
+ end
data/config.yaml ADDED
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: rubykaigi-2025-lt
3
+ base_name: riscv64.rubyci.org_internal
4
+ tags:
5
+ - ruby
6
+ presentation_date: '2025-04-17'
7
+ presentation_start_time:
8
+ presentation_end_time:
9
+ version: 2025.4.17.0
10
+ licenses: []
11
+ slideshare_id: riscv64-rubyci-org-internal-at-rubykaigi-2025-lt
12
+ speaker_deck_id: riscv64-dot-rubyci-dot-org-internal
13
+ vimeo_id:
14
+ youtube_id:
15
+ width: 960
16
+ height: 600
17
+ source_code_uri:
18
+ author:
19
+ markup_language: :markdown
20
+ name: Kazuhiro NISHIYAMA
21
+ email: zn@mbf.nifty.com
22
+ rubygems_user: znz
23
+ slideshare_user: znzjp
24
+ speaker_deck_user: znz
data/img_2730.jpg ADDED
Binary file
@@ -0,0 +1,152 @@
1
+ # riscv64.rubyci.org internal
2
+
3
+ author
4
+ : Kazuhiro NISHIYAMA
5
+
6
+ institution
7
+ : 株式会社Ruby開発
8
+
9
+ content-source
10
+ : RubyKaigi 2025 LT
11
+
12
+ date
13
+ : 2025-04-17
14
+
15
+ allotted-time
16
+ : 5m
17
+
18
+ theme
19
+ : lightning-simple
20
+
21
+ # What's rubyci.org?
22
+
23
+ - A *CI* results summary site
24
+ - <https://rubyci.org/>
25
+ - Runs *chkbuild* on various CI environments
26
+ - <https://github.com/ruby/chkbuild>
27
+ - Most environments run *all* supported Ruby versions.
28
+ - Some environments run *only on the master branch*.
29
+ - JIT variants, Android, *riscv64*.
30
+
31
+ ## note
32
+
33
+ まず、rubyci.org とは、いろんな環境で実行しているRubyのCIの結果のまとめサイトです。
34
+ 各 CI 環境で chkbuild を実行しています。
35
+ ほとんどの環境では現在サポートされている ruby の全バージョンを実行しています。
36
+ いくつかの環境ではマスターブランチのみ実行しています。
37
+
38
+ # rubyci.org
39
+
40
+ ![](rubyci.png){:relative_height='100'}
41
+
42
+ ## note
43
+
44
+ 実際の rubyci.org はこんな感じで、私がメンテナンスしている risc 環境は最新の revision で実行できていないので、ちょっと薄くなっている行になります。
45
+
46
+ # Why do I maintain the riscv64 VM?
47
+
48
+ - I am interested in *minor environments* and run tests on them. They may uncover interesting bugs.
49
+ - *`qemu-system-riscv64`* has become easier to use recently.
50
+ - When I took over *the riscv64 VM*,
51
+ there was an environment created by mame-san,
52
+ but it was slightly outdated.
53
+ - I made *some improvements* and will share *one of them* here.
54
+
55
+ ## note
56
+
57
+ 次に、なぜ私が risc 環境のメンテナンスをしているかと言うと、マイナーな環境でテストを実行するとバグがみつかるかもしれないからです。
58
+ 最近は qemu で実行しやすくなっているのも理由のひとつです。
59
+ まめさんが作成した環境がすでにあったのですが、少し古くなっていたので引き継いでメンテナンスしています。
60
+ いくつか工夫が必要だったので、そのうちのひとつを紹介します。
61
+
62
+ # Premise
63
+
64
+ - `qemu-system-riscv64` runs on host environments and is *very slow*.
65
+ - CPU emulation with qemu-system takes much longer than running on real hardware.
66
+ - Therefore, it runs *only on the master branch*.
67
+ - Even so, it can take *hours* (e.g., 7 hours).
68
+
69
+ To avoid wasting time by interrupting CI due to reboots, I devised a way to reboot between CI runs.
70
+
71
+ ## note
72
+
73
+ 前提として、qemu 環境は非常に遅いので、マスターブランチのみ実行しています。
74
+ それでも、7時間ぐらいかかっています。
75
+
76
+ そのため、再起動で CI が中断すると非常に無駄が大きいので、CI の実行の合間に再起動するように工夫しました。
77
+
78
+ # How to run without interruption
79
+
80
+ - `unattended-upgrade` sometimes requires a reboot
81
+ after upgrading packages.
82
+ - It creates `/run/reboot-required`.
83
+ - I allocate an hour for maintenance between chkbuild runs.
84
+ - The machine reboots during this time if necessary.
85
+
86
+ ## note
87
+
88
+ パッケージの更新後に再起動が必要になると `unattended-upgrade` が `/run/reboot-required` を作成します。
89
+ `chkbuild` の実行の合間にメンテナンス時間をとっていて、ファイルの存在をチェックして、必要ならそこで再起動するようにしました。
90
+
91
+ # Guest VM and Host OS
92
+
93
+ - It is relatively easy to wait for the guest VM to reboot itself.
94
+ - However, the host OS also needs to handle reboots.
95
+
96
+ ## note
97
+
98
+ これでゲストVM自体の再起動は簡単に待てるようになりましたが、
99
+ ホストOSの再起動も待つ必要があります。
100
+
101
+ # How to wait?
102
+
103
+ - The guest and host cooperate using a shared directory.
104
+ - After chkbuild finishes, it updates the `mtime` of a specific file in the shared directory.
105
+ - A custom systemd path unit detects the `mtime` change
106
+ and reboots both the guest and host if necessary.
107
+ - Pros:
108
+ - Loose coupling between components.
109
+ - The notifier requires fewer privileges.
110
+ - Usually no maintenance is required.
111
+
112
+ ## note
113
+
114
+ そこで、共有ディレクトリを使って通知するようにしました。
115
+ 具体的にはchkbuildが終わったときに、特定のファイルの mtime を更新して、
116
+ systemd の path unit で検出して、必要なら再起動します。
117
+ この方法の利点は、疎結合にできるのと、通知側の権限を少なくできる、というところです。
118
+ そして、普段はメンテナンス不要にできました。
119
+
120
+ # Are you interested?
121
+
122
+ - If you want Ruby to support your favorite environments better:
123
+ - Set up your own CI environment to run chkbuild.
124
+ - Use `start-rubyci` in `ruby/chkbuild`.
125
+ - Add your results to `rubyci.org`.
126
+ - Contact the `rubyci.org` maintainers to add your chkbuild output URLs.
127
+ - If tests fail, fix them, report issues, or take other actions.
128
+
129
+ ## note
130
+
131
+ こんな感じで、まだあまりテストされていない環境でのrubyをもっとサポートしたいと思ったら、
132
+ chkbuild を動かす環境をととのえて、 rubyci.org に追加してもらうと良いでしょう。
133
+ そして、テストが失敗したら、何か対処してください。
134
+
135
+ # self.introduction
136
+
137
+ - Kazuhiro NISHIYAMA
138
+ - One of the Ruby Committers
139
+ - GitHub, etc.: `@znz`
140
+ - 株式会社Ruby開発 www.ruby-dev.jp
141
+ - We are hiring!
142
+
143
+ ## note
144
+
145
+ 最後に自己紹介です。
146
+ Ruby コミッターのひとりで、github などはゼットエヌゼットというアカウントで活動しています。
147
+ 株式会社Ruby開発に所属しています。採用強化中なので興味があればよろしくお願いします。
148
+ 以上で発表を終わります。
149
+
150
+ # 株式会社Ruby開発
151
+
152
+ ![](img_2730.jpg){:relative_height='100'}
data/rubyci.png ADDED
Binary file
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-znz-rubykaigi-2025-lt
3
+ version: !ruby/object:Gem::Version
4
+ version: 2025.4.17.0
5
+ platform: ruby
6
+ authors:
7
+ - Kazuhiro NISHIYAMA
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 2025-05-03 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rabbit
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 2.0.2
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 2.0.2
26
+ description: RubyKaigi 2025 の LT の発表資料です。
27
+ email:
28
+ - zn@mbf.nifty.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - ".rabbit"
34
+ - README.md
35
+ - Rakefile
36
+ - config.yaml
37
+ - img_2730.jpg
38
+ - pdf/rubykaigi-2025-lt-riscv64.rubyci.org_internal.pdf
39
+ - riscv64.rubyci.org_internal.md
40
+ - rubyci.png
41
+ homepage: https://slide.rabbit-shocker.org/authors/znz/rubykaigi-2025-lt/
42
+ licenses: []
43
+ metadata: {}
44
+ rdoc_options: []
45
+ require_paths:
46
+ - lib
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ requirements: []
58
+ rubygems_version: 3.6.2
59
+ specification_version: 4
60
+ summary: riscv64.rubyci.org internal
61
+ test_files: []