/
deteled
/
iptvnator
Обзор
Документация
Войти
/
deteled
/
iptvnator
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
.github/workflows/docker.yml
123 строки
4 KB
4gray
ci(deps): bump checkout/upload-artifact/download-artifact majors (#1264)
26 июл 2026, 20:54
Не верифицирован
26 июл 2026, 20:54
f193232
Код
Авторство
О чём код?
name: docker-build on: pull_request: paths: - '.github/workflows/docker.yml' - 'apps/web/**' - 'apps/web-backend/**' - 'docker/**' - 'libs/**' - 'package.json' - 'pnpm-lock.yaml' push: branches: - master tags: - 'v*' workflow_dispatch: inputs: push: description: 'Push the image to Docker Hub' required: true type: boolean default: false permissions: contents: read # Superseded PR pushes cancel their still-running image build. Master/tag/ # manual runs get a unique group (run_id): GitHub keeps at most one pending # run per group even with cancel-in-progress: false, so a shared ref group # could silently drop a queued publish between two rapid master pushes. concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} jobs: build: name: Build Docker image runs-on: ubuntu-latest timeout-minutes: 90 steps: - name: Checkout uses: actions/checkout@v7 - name: Prepare Docker metadata id: docker-meta shell: bash run: | set -euo pipefail version="$(node -p "require('./package.json').version")" short_sha="${GITHUB_SHA::12}" publish="false" platforms="linux/amd64" tags="4gray/iptvnator:pr-${{ github.event.pull_request.number || 'manual' }}" if [[ "${GITHUB_EVENT_NAME}" == "push" && "${GITHUB_REF}" == "refs/heads/master" ]]; then publish="true" platforms="linux/amd64,linux/arm64" tags=$(cat <<TAGS 4gray/iptvnator:latest 4gray/iptvnator:${version}-pwa 4gray/iptvnator:${version}-pwa-${short_sha} 4gray/iptvnator:sha-${short_sha} TAGS ) elif [[ "${GITHUB_EVENT_NAME}" == "push" && "${GITHUB_REF}" == refs/tags/v* ]]; then publish="true" platforms="linux/amd64,linux/arm64" tag_version="${GITHUB_REF_NAME#v}" tags=$(cat <<TAGS 4gray/iptvnator:${tag_version} 4gray/iptvnator:v${tag_version} TAGS ) if [[ "${tag_version}" != *-* ]]; then tags="${tags}"$'\n'"4gray/iptvnator:stable" fi elif [[ "${GITHUB_EVENT_NAME}" == "workflow_dispatch" && "${{ inputs.push }}" == "true" ]]; then publish="true" platforms="linux/amd64,linux/arm64" tags=$(cat <<TAGS 4gray/iptvnator:manual-${short_sha} 4gray/iptvnator:sha-${short_sha} TAGS ) fi { echo "publish=${publish}" echo "platforms=${platforms}" echo "tags<<EOF" echo "${tags}" echo "EOF" } >> "${GITHUB_OUTPUT}" - name: Login to Docker Hub if: steps.docker-meta.outputs.publish == 'true' uses: docker/login-action@v4 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Build Docker image uses: docker/build-push-action@v7 with: context: . file: ./docker/Dockerfile push: ${{ steps.docker-meta.outputs.publish == 'true' }} tags: ${{ steps.docker-meta.outputs.tags }} platforms: ${{ steps.docker-meta.outputs.platforms }} build-args: | BUILD_COMMIT=${{ github.event.pull_request.head.sha || github.sha }} cache-from: type=gha cache-to: type=gha,mode=max,ignore-error=true