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); }
今日のコミット。