Как проверить, существует ли версия образа GitHub docker? - PullRequest
0 голосов
/ 27 марта 2020

Я создаю рабочие процессы DevOps на GitHub с помощью действий GitHub.

Иногда интеграционные тесты не выполняются, и поэтому мой рабочий процесс также не выполняется. Часто эти сбои вызваны сбоями в интеграционных тестах, и при модификации тестов не требуется никакого дополнительного кода.

Когда я перезапускаю свой рабочий процесс, мой код перестраивается (и тестируется) до того, как он будет загружен на GitHub (снова) как docker изображение.

Мой вопрос: Как я могу проверить, если мое изображение docker уже создано и загружено в мой пакет GitHub, поэтому мне не нужно перестраивать идентичный image?

Мой yaml-файл рабочего процесса содержит эту конфигурацию для моего docker изображения:

env:
  IMAGE: docker.pkg.github.com/${{ github.repository }}/awesome-module:${{ github.sha }}

Я также пытаюсь найти решение с помощью сообщества GitHub, но пока не получилось. Смотрите тему https://github.community/t5/GitHub-Actions/How-to-check-if-a-docker-image-is-already-built-on-GitHub/m-p/56364/highlight/false#M9845

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

Из сообщества GitHub:

on: push

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - name: Check package version 
      run: |
        manifest=$(curl -X GET https://docker.pkg.github.com/v2/{org}/{repo}/{image name}/manifests/$GITHUB_SHA -u $GITHUB_ACTOR:${{ secrets.GITHUB_TOKEN }} | jq '.')
        echo $manifest
0 голосов
/ 03 мая 2020

Вы можете использовать docker manifest inspect docker.pkg.github.com/<repo>/<image>@sha256:<sha>, затем проверить вывод

Изображение существует:

> docker manifest inspect hello-world@sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f
{
        "schemaVersion": 2,
        "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
        "config": {
                "mediaType": "application/vnd.docker.container.image.v1+json",
                "size": 1520,
                "digest": "sha256:1815c82652c03bfd8644afda26fb184f2ed891d921b20a0703b46768f9755c57"
        },
        "layers": [
                {
                        "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
                        "size": 972,
                        "digest": "sha256:b04784fba78d739b526e27edc02a5a8cd07b1052e9283f5fc155828f4b614c28"
                }
        ]
}

Изображение не существует:

> docker manifest inspect hello-world@sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74e
no such manifest: docker.io/library/hello-world@sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74e
...