Update README and Docker workflow to clarify registry login process and handling of secrets. Added explanation for why certain steps are not skipped in workflows, and improved the logic for logging in and pushing to the Container Registry.
Docker / build (push) Successful in 7s
Docker / build (push) Successful in 7s
This commit is contained in:
+29
-21
@@ -19,30 +19,37 @@ jobs:
|
||||
- name: Build image
|
||||
run: docker build -t cloudflare-balancer:ci .
|
||||
|
||||
# Опционально: публикация в Container Registry Gitea.
|
||||
# Секреты репозитория:
|
||||
# REGISTRY_URL — хост Gitea (https://gitea.example.com допустимо)
|
||||
# REGISTRY_USER — имя пользователя Gitea (логин)
|
||||
# PACKAGE_TOKEN — токен для push в пакеты / registry (основной; пароль в docker login)
|
||||
# REGISTRY_PASSWORD — запасной вариант, если PACKAGE_TOKEN не задан
|
||||
- name: Log in to registry
|
||||
if: ${{ secrets.REGISTRY_USER != '' && secrets.REGISTRY_URL != '' && (secrets.PACKAGE_TOKEN != '' || secrets.REGISTRY_PASSWORD != '') }}
|
||||
# Публикация в registry: не используйте `if: secrets.X != ''` — в Gitea/GitHub
|
||||
# проверка «пустой ли секрет» в выражениях часто всегда ложна, шаги пропускаются.
|
||||
# Секреты пробрасываем в env и проверяем в bash.
|
||||
#
|
||||
# Секреты: REGISTRY_URL, REGISTRY_USER, PACKAGE_TOKEN (или REGISTRY_PASSWORD)
|
||||
- name: Login and push to Container Registry (optional)
|
||||
env:
|
||||
REGISTRY_URL: ${{ secrets.REGISTRY_URL }}
|
||||
REGISTRY_USER: ${{ secrets.REGISTRY_USER }}
|
||||
PACKAGE_TOKEN: ${{ secrets.PACKAGE_TOKEN }}
|
||||
REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}
|
||||
run: |
|
||||
REG="${{ secrets.REGISTRY_URL }}"
|
||||
REG="${REG#https://}"
|
||||
REG="${REG#http://}"
|
||||
REG="${REG%/}"
|
||||
PASS="${{ secrets.PACKAGE_TOKEN }}"
|
||||
if [ -z "$PASS" ]; then PASS="${{ secrets.REGISTRY_PASSWORD }}"; fi
|
||||
echo "$PASS" | docker login "$REG" -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
||||
|
||||
- name: Tag and push
|
||||
if: ${{ secrets.REGISTRY_USER != '' && secrets.REGISTRY_URL != '' && (secrets.PACKAGE_TOKEN != '' || secrets.REGISTRY_PASSWORD != '') }}
|
||||
run: |
|
||||
REG="${{ secrets.REGISTRY_URL }}"
|
||||
REG="${REG#https://}"
|
||||
set -e
|
||||
if [ "${GITHUB_EVENT_NAME:-}" = "pull_request" ]; then
|
||||
echo "Pull request: push в registry не выполняется (только сборка)."
|
||||
exit 0
|
||||
fi
|
||||
if [ -z "${REGISTRY_URL:-}" ] || [ -z "${REGISTRY_USER:-}" ]; then
|
||||
echo "Пропуск registry: задайте секреты REGISTRY_URL и REGISTRY_USER."
|
||||
exit 0
|
||||
fi
|
||||
PASS="${PACKAGE_TOKEN:-}"
|
||||
if [ -z "$PASS" ]; then PASS="${REGISTRY_PASSWORD:-}"; fi
|
||||
if [ -z "$PASS" ]; then
|
||||
echo "Пропуск registry: задайте PACKAGE_TOKEN или REGISTRY_PASSWORD."
|
||||
exit 0
|
||||
fi
|
||||
REG="${REGISTRY_URL#https://}"
|
||||
REG="${REG#http://}"
|
||||
REG="${REG%/}"
|
||||
echo "$PASS" | docker login "$REG" -u "$REGISTRY_USER" --password-stdin
|
||||
IMG="cloudflare-balancer"
|
||||
OWNER_LOWER=$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')
|
||||
TAG="${GITHUB_SHA:0:12}"
|
||||
@@ -51,3 +58,4 @@ jobs:
|
||||
docker tag cloudflare-balancer:ci "${REG}/${OWNER_LOWER}/${IMG}:latest"
|
||||
docker push "${REG}/${OWNER_LOWER}/${IMG}:${TAG}"
|
||||
docker push "${REG}/${OWNER_LOWER}/${IMG}:latest"
|
||||
echo "Опубликовано: ${REG}/${OWNER_LOWER}/${IMG}:${TAG}"
|
||||
|
||||
Reference in New Issue
Block a user