如何在GitHub Actions中使用Buildah脚本自动生成镜像并上传到GitHub Container Registry

88次阅读
没有评论

问题描述

在使用Buildah时,有一个需求是希望能够在GitHub Actions中自动化创建一个镜像,并且最好能将该镜像上传到GitHub Container Registry。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

使用Makefile和GitHub Actions自动化构建和上传镜像

以下是一个方案,利用Makefile和GitHub Actions来实现自动化构建和上传镜像的过程。这个方案假设你已经有一个Buildah脚本,该脚本可以创建名为”myAlpineImage”的镜像。

步骤1:创建Makefile

首先,你需要创建一个Makefile,其中包含构建镜像的方法。在这个示例中,我们假设你的Buildah脚本在./image/distroless.sh中,并且脚本能够创建你需要的镜像。

.PHONY: image clean image-release

image: image-release

image-release:
    cargo build --release
    buildah unshare ./image/distroless.sh release

clean:
    cargo -v clean

步骤2:配置GitHub Actions

接下来,你需要配置GitHub Actions,使其在每次推送到master分支或发起拉取请求时自动构建并上传镜像。

name: Distroless Image Creation

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

env:
  CARGO_TERM_COLOR: always

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    - name: Download and create image.
      run: make image-release

    - name: Push To Registry
      uses: redhat-actions/push-to-registry@v2.1.1
      with:
        image: myAlpineImage
        tags: latest
        registry: ghcr.io/evancarroll/project
        username: evancarroll
        password: ${{ secrets.GHCR_TOKEN }}

步骤3:添加GitHub Secrets

在你的GitHub仓库中,转到”Settings / Developer settings / Personal access tokens”页面,创建一个名为GHCR_TOKEN的个人访问令牌,并将该令牌添加到GitHub Secrets中。

总结

通过使用Makefile和GitHub Actions,你可以自动化构建并上传Buildah脚本创建的镜像到GitHub Container Registry。确保在实际应用中将Makefile和GitHub Actions配置根据你的需求进行调整,以适应具体的镜像构建和上传流程。

正文完