我正在使用 GitHub Actions 来构建简单的 docker 映像并将其推送到 GitHub 容器注册表。我的存储库位于组织内部,并且我已在组织级别配置了机密。
该作业成功登录到 ghcr,但是当它尝试将其推送到 ghcr 时,会出现以下错误:
错误:buildx 失败,原因:错误:无法解决:无法推送 ghcr.io/:意外状态:403 禁止。
github-actions.yml
name: Build and Push Freeradius proxy
on:
push:
branches:
- '*'
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
packages: write
steps:
- name: Checkout Code
uses: actions/checkout@v2
with:
token: ${{ secrets.GCR_TOKEN}}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@79abd3f86f79a9d68a23c75a09a9a85889262adf
- name: Login to GHCR
uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c
with:
registry: ghcr.io
username: ${{ secrets.REPO_OWNER }}
password: ${{ secrets.GCR_TOKEN }}
- name: Build and Push Docker Image
uses: …Run Code Online (Sandbox Code Playgroud) 我对《Rust Book》中的这一说法感到困惑:
\n\n\n使用枚举而不是结构还有另一个优点:每个变体可以具有不同类型和数量的关联数据。版本四类型 IP 地址始终有四个数字组成部分,其值介于 0 到 255 之间。如果我们想将 V4 地址存储为四个
\nu8值,但仍将 V6 地址表示为一个String值,我们将\xe2\x80\x99t 无法与一个 struct。枚举可以轻松处理这种情况:Run Code Online (Sandbox Code Playgroud)\n#![allow(unused_variables)]\nfn main() {\n enum IpAddr {\n V4(u8, u8, u8, u8),\n V6(String),\n }\n\n let home = IpAddr::V4(127, 0, 0, 1);\n\n let loopback = IpAddr::V6(String::from("::1"));\n}\n
但是,当我尝试使用结构将 V4 地址存储为四个u8值但仍将 V6 地址表示为一个String值时,它也执行相同的操作,没有任何错误。
#[derive(Debug)]\nstruct IpAddr {\n V4:(u8, u8, u8, u8),\n V6:String,\n}\n\nfn main () {\n let home = IpAddr {\n V4: (127, …Run Code Online (Sandbox Code Playgroud) 我正在尝试用 Rust 计算素数,但遇到一些问题。我收到两个错误。我不明白该值如何返回到主函数。
fn main() {
let x = is_prime(25); //function calling
println!("{}", x);
}
fn is_prime(n: u32) -> bool {
let mut result: bool = for a in 2..n {
result = if n % a == 0 { false } else { true };
};
result
}
Run Code Online (Sandbox Code Playgroud)
fn main() {
let x = is_prime(25); //function calling
println!("{}", x);
}
fn is_prime(n: u32) -> bool {
let mut result: bool = for a in 2..n {
result = if …Run Code Online (Sandbox Code Playgroud)