使用Github Actions创建Docker容器不会更新Github packages中的软件包。

3
以下的.github工作流脚本不会更新Github Packages上已部署的软件包。
每次部署后,我希望脚本能够更新已部署的软件包。
这是我的部署脚本。请问有人可以告诉我如何修改它以便在每次部署后创建一个新的软件包吗?
name: Continuous Integration and Delivery

on: [ push ]

env:
  WEB_IMAGE: ghcr.io/$(echo $GITHUB_REPOSITORY | tr '[:upper:]' '[:lower:]')/web
  NGINX_IMAGE: ghcr.io/$(echo $GITHUB_REPOSITORY | tr '[:upper:]' '[:lower:]')/nginx

jobs:

  build:
    name: Build Docker Images
    runs-on: ubuntu-latest
    steps:
      - name: Log in to GitHub Packages
        run: echo ${PERSONAL_ACCESS_TOKEN} | docker login ghcr.io -u ${{ secrets.NAMESPACE }} --password-stdin
        env:
          PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
      - name: Build images
        run: |
          docker-compose down -v
          docker-compose -f docker-compose.ci.yml build
      - name: Push images
        run: |
          docker push ${{ env.WEB_IMAGE }}
          docker push ${{ env.NGINX_IMAGE }}

Github包仅停留在最初推送的时间,并且不更新包。经检查,代码更改是原始的,并未更改为新的代码。

enter image description here

在 GitHub Actions 上,它显示已成功推送。

enter image description here

这里是docker.ci

version: "3.8"

services:
  web:
    build:
      context: ./app
      dockerfile: Dockerfile.prod
    image: "${WEB_IMAGE}"
    command: gunicorn hello_django.wsgi:application --bind 0.0.0.0:8000
    volumes:
      - static_volume:/usr/src/app/staticfiles
      - media_volume:/usr/src/app/mediafiles
    expose:
      - 8000
    env_file: .env
  nginx:
    build:
      context: ./nginx
    image: "${NGINX_IMAGE}"
    volumes:
      - static_volume:/usr/src/app/staticfiles
      - media_volume:/usr/src/app/mediafiles
    ports:
      - 80:80
    depends_on:
      - web

volumes:
  static_volume:
  media_volume:

“代码更改被检测”是什么意思?您的操作是在您推送提交时运行的,对吗?本地更改无法被检测到,因为它们是本地的;或者我漏掉了什么吗? - Rafael-WO
@Rafael-WO docker-compose -f docker-compose.ci.yml build 这行代码应该包含代码更改,以便进行部署。 - Joseph Adam
好的,但具体问题是什么?它是否拒绝构建? - Rafael-WO
@Rafael-WO,我现在缩小了问题范围,GitHub软件包没有更新。 - Joseph Adam
但这很奇怪,它应该在更新。如果我不能再帮助你了,抱歉... - Rafael-WO
你能否包含在推送图片时的操作日志? - LeadingMoominExpert
1个回答

3
问题是在推送时没有包含docker标签。我在推送时添加了标签,这就解决了问题。
以下内容不足够,您还必须将标签添加到推送中,否则GitHub存储库将因某种原因无法更新它。
  - name: Push images
    run: |
      docker push ${{ env.WEB_IMAGE }}
      docker push ${{ env.NGINX_IMAGE }}

您需要执行以下操作

  - name: Push images
    run: |
      docker tag ${{ env.WEB_IMAGE }}  ${{ env.WEB_IMAGE_BASE }}:latest
      docker push ${{ env.WEB_IMAGE }}
      docker push ${{ env.WEB_IMAGE_BASE }}:latest
      docker tag ${{ env.NGINX_IMAGE }} ${{ env.NGINX_IMAGE_BASE }}:latest
      docker push ${{ env.NGINX_IMAGE }}
      docker push ${{ env.NGINX_IMAGE_BASE }}:latest

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接