2023-12-05 GitHub Container Registry でコンテナイメージをリポジトリに LABEL で関連付ける
TL;DR: LABEL org.opencontainers.image.source=https://github.com/OWNER/REPO
を含んだ Docker イメージを GitHub Container Registry にプッシュするとリポジトリに関連付けられる。
bouzuya/genuuid では Github Container Registry を使用している。
名前のとおりだけど GitHub による Container Registry だ。 GitHub にコンテナイメージを登録しておくことができる。ぼくは GitHub Packages をコンテナイメージ向けに特化したようなものだと認識している。このコンテナイメージはアカウントごとに格納されるのだけど、リポジトリと関連付けることができる。
いくつかの方法で関連付けできるのだけど、ラベル付けによるものを試した。
詳細な手順は↓に書いてあるみたい。
要約すると↓ (OWNER
/ REPO
はそれぞれ置換) を Dockerfile
に書いておくと良い。
LABEL org.opencontainers.image.source=https://github.com/OWNER/REPO
LABEL
自体は任意の Key Value を指定できる。ただ、ここで指定しているラベル (org.opencontainers.image.source
) は OCI Image Format Specification で定められた一般的なものらしい。
https://github.com/opencontainers/image-spec/blob/main/annotations.md#pre-defined-annotation-keys
org.opencontainers.image.source URL to get source code for building the image (string)
ぼくは最初マルチステージビルドの中間イメージに LABEL
つけてしまって動かなかった (もしかすると他の問題かもしれないけど) 。
bouzuya/genpi と bouzuya/genuuid をそれぞれバージョンアップした。
axum 0.7.1 -> 0.7.2 と dependabot 設定の追加。
PAST #12 第12回 アルゴリズム実技検定 過去問
- M - シリーズ
https://atcoder.jp/contests/past202209-open/tasks/past202209_m
- 提出: https://atcoder.jp/contests/past202209-open/submissions/48214376
- 最短経路問題
- 0..=N の N+1個の頂点
- 0..N の i から i+1 への重み a_i の N 本の辺
- l-1 から r への重み b の M 本の辺
- 0..N の i+1 から i への重み 0 の N 本の辺
- このグラフで 0 から N への最短経路を求める
use std::{cmp::Reverse, collections::BinaryHeap};
use proconio::input;
fn main() {
input! {
n: usize,
m: usize,
a: [usize; n],
blr: [(usize, usize, usize); m],
};
let mut edges = vec![vec![]; n + 1];
for (i, a_i) in a.iter().copied().enumerate() {
edges[i].push((i + 1, a_i));
}
for (b, l, r) in blr {
edges[l - 1].push((r, b));
}
for i in 0..n {
edges[i + 1].push((i, 0));
}
let inf = 1_usize << 60;
let mut dist = vec![inf; n + 1];
let mut pq = BinaryHeap::new();
dist[0] = 0;
pq.push((Reverse(0), 0));
while let Some((Reverse(d), u)) = pq.pop() {
if dist[u] < d {
continue;
}
for (v, w) in edges[u].iter().copied() {
if dist[v] <= d + w {
continue;
}
dist[v] = d + w;
pq.push((Reverse(d + w), v));
}
}
let ans = dist[n];
println!("{}", ans);
}
今日のコミット。