如何编写GitHub Actions的workflows.yaml以基于Procfile用Buildpacks构建镜像?
GitHub Actions 构建配置(基于Buildpacks)
下面是适配你需求的GitHub Actions工作流配置,完全替代之前在Cloud Shell里的pack build操作:
name: Build App Image with Buildpacks # 触发条件:推送到main分支或提交PR到main分支时执行 on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build-image: runs-on: ubuntu-latest steps: # 拉取当前仓库代码,对应你之前的git pull操作 - name: Checkout repository uses: actions/checkout@v4 # 安装Buildpacks的pack CLI工具 - name: Setup Pack CLI uses: buildpacks/github-actions/setup-pack@v5 # 执行镜像构建命令,和你在Cloud Shell里的命令完全一致 - name: Build Docker image with Buildpacks run: | pack build my-app-image \ --builder gcr.io/buildpacks/builder:v1 \ --path . # ------------------- 可选:推送镜像到GCR ------------------- # 如果需要把构建好的镜像推送到Google容器仓库,添加以下步骤 - name: Authenticate to Google Cloud uses: google-github-actions/auth@v2 with: credentials_json: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }} - name: Configure Docker for GCR run: | gcloud auth configure-docker gcr.io - name: Tag and push image to GCR run: | # 用commit SHA作为标签,避免镜像被覆盖 docker tag my-app-image gcr.io/${{ secrets.GCP_PROJECT_ID }}/my-app-image:${{ github.sha }} docker push gcr.io/${{ secrets.GCP_PROJECT_ID }}/my-app-image:${{ github.sha }}
关键说明:
- 触发规则:默认在
main分支有代码推送或PR时触发,你可以根据自己的分支名修改branches字段。 - 环境依赖:用
ubuntu-latest作为运行环境,确保pack CLI能正常工作。 - 代码检出:
actions/checkout@v4会自动拉取当前仓库的代码,对应你之前手动git pull的操作。 - 镜像构建:完全复用你之前的
pack build命令,pack会自动识别根目录下的Procfile,无需额外配置启动命令。 - 可选推送:如果要推送到GCR,需要在GitHub仓库的「Settings → Secrets and variables → Actions」里添加两个密钥:
GCP_SERVICE_ACCOUNT_KEY:GCP服务账号的JSON密钥内容GCP_PROJECT_ID:你的GCP项目ID
内容的提问来源于stack exchange,提问作者Muhammad Ikhwan Perwira
相关产品推荐
相关产品推荐

