test new build

This commit is contained in:
2025-10-15 11:43:09 +03:00
parent 4b4f23fe19
commit cb5d1652a3

View File

@@ -21,51 +21,89 @@ jobs:
CR_REPO: ${{ github.event.repository.name }}
IMAGE_TAG: ${{ github.sha }}
steps:
- name: Checkout
uses: actions/checkout@master
- name: Checkout LFS
if: ${{ inputs.lfs }}
run: |
UrlBase=$GITHUB_SERVER_URL; \
UrlLfsBase=$UrlBase/${{ github.repository }}.git/info/lfs/objects; \
Auth=`/usr/bin/git config --get --local http.$UrlBase/.extraheader`; \
/usr/bin/git config --local http.${UrlLfsBase}/batch.extraheader "$Auth"; \
/usr/bin/git config --local http.${UrlLfsBase}/.extraheader ''
- name: notify
uses: https://bb.hublab.ru/HUB/workflows/.gitea/actions/notify@HEAD
with:
result: 'started'
name: build tag ${{ inputs.tag }}
secrets: ${{ toJSON(secrets) }}
- uses: actions/checkout@v4
with:
lfs: ${{ inputs.lfs }}
git config --local lfs.transfer.maxretries 1
git ls-remote
git lfs checkout
git lfs fetch
git lfs pull
#git lfs fetch origin refs/heads/${{ github.head_ref || github.ref_name }}
- name: Use ssh key
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: |
${{ secrets.LIB_SSH_KEY }}
${{ secrets.LIB_NEW_SSH_KEY }}
- name: Build Docker image
run: |
if [ "$NO_CACHE" == "true" ]; then
docker build -t cr.yandex/$CR_REGISTRY/$CR_REPO:${IMAGE_TAG::7} --no-cache --ssh default .
else
docker build -t cr.yandex/$CR_REGISTRY/$CR_REPO:${IMAGE_TAG::7} --ssh default .
fi
env:
NO_CACHE: ${{ inputs.force_build || 'false' }}
ssh-private-key: |
${{ secrets.LIB_SSH_KEY }}
${{ secrets.LIB_NEW_SSH_KEY }}
- name: Yandex Cloud Login
uses: yc-actions/yc-cr-login@v2
with:
yc-sa-json-credentials: ${{ secrets.YC_SA_JSON_CREDENTIALS }}
- name: Tag image
env:
INPUT_TAG: ${{ inputs.tag }}
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
with:
install: true
- name: Shorten commit SHA
run: echo "SHORT_SHA=${GITHUB_SHA::7}" >> $GITHUB_ENV
- name: Normalize tag
id: normalize
run: |
echo ${INPUT_TAG/\//-} ${IMAGE_TAG::7} $INPUT_TAG $IMAGE_TAG
docker tag cr.yandex/$CR_REGISTRY/$CR_REPO:${IMAGE_TAG::7} cr.yandex/$CR_REGISTRY/$CR_REPO:${INPUT_TAG/\//-}
- name: Push image
env:
INPUT_TAG: ${{ inputs.tag }}
SAFE_TAG=$(echo "${{ inputs.tag }}" | tr '/' '-')
echo "SAFE_TAG=$SAFE_TAG" >> $GITHUB_ENV
- name: Restore Docker layer cache
uses: actions/cache/restore@v4
with:
path: /cache/buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Build and push multi-arch image
id: build-step
uses: docker/build-push-action@v6
with:
push: true
context: .
builder: ${{ steps.buildx.outputs.name }}
tags: |
cr.yandex/${{ env.CR_REGISTRY }}/${{ env.CR_REPO }}:${{ env.SHORT_SHA }}
cr.yandex/${{ env.CR_REGISTRY }}/${{ env.CR_REPO }}:${{ env.SAFE_TAG }}
platforms: linux/amd64,linux/arm64/v8
ssh: default
no-cache: ${{ inputs.force_build }}
build-args: |
GIT_COMMIT=${{ github.sha }}
cache-from: |
type=local,src=/cache/buildx-cache
cache-to: |
type=local,dest=/cache/buildx-cache-new,mode=max
- name: Move new cache
if: always()
run: |
docker push cr.yandex/$CR_REGISTRY/$CR_REPO:${IMAGE_TAG::7}
docker push cr.yandex/$CR_REGISTRY/$CR_REPO:${INPUT_TAG/\//-}
rm -rf /cache/buildx-cache
mv /cache/buildx-cache-new /cache/buildx-cache
- name: Save Docker layer cache
if: always()
uses: actions/cache/save@v4
with:
path: /cache/buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
- name: post-notify
if: always()
uses: https://bb.hublab.ru/HUB/workflows/.gitea/actions/notify@HEAD
with:
result: ${{ steps.build-step.outcome }}
name: build tag ${{ inputs.tag }}
secrets: ${{ toJSON(secrets) }}