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 +7 -0
- data/.rabbit +2 -0
- data/README.md +23 -0
- data/Rakefile +17 -0
- data/config.yaml +24 -0
- data/img_2730.jpg +0 -0
- data/pdf/rubykaigi-2025-lt-riscv64.rubyci.org_internal.pdf +0 -0
- data/riscv64.rubyci.org_internal.md +152 -0
- data/rubyci.png +0 -0
- metadata +61 -0
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
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
|
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
|
+
{: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
|
+
{: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: []
|