feat(ci): support internal offline build cache
Runner Canary / runner-canary (push) Successful in 0s
Runner Canary / runner-canary (push) Successful in 0s
This commit is contained in:
@@ -15,6 +15,11 @@ on:
|
|||||||
required: false
|
required: false
|
||||||
default: .
|
default: .
|
||||||
type: string
|
type: string
|
||||||
|
cache_image:
|
||||||
|
description: Optional internal image carrying BuildKit inline cache
|
||||||
|
required: false
|
||||||
|
default: ""
|
||||||
|
type: string
|
||||||
test_command:
|
test_command:
|
||||||
description: Optional source-level test command
|
description: Optional source-level test command
|
||||||
required: false
|
required: false
|
||||||
@@ -48,11 +53,6 @@ jobs:
|
|||||||
- name: Source tests
|
- name: Source tests
|
||||||
if: ${{ inputs.test_command != '' }}
|
if: ${{ inputs.test_command != '' }}
|
||||||
run: ${{ inputs.test_command }}
|
run: ${{ inputs.test_command }}
|
||||||
- name: Build immutable candidate image
|
|
||||||
run: |
|
|
||||||
set -eu
|
|
||||||
docker build --pull=false -f "${{ inputs.dockerfile }}" \
|
|
||||||
-t "${{ inputs.image_name }}:sha-${{ gitea.sha }}" "${{ inputs.build_context }}"
|
|
||||||
- name: Login and publish candidate image
|
- name: Login and publish candidate image
|
||||||
env:
|
env:
|
||||||
REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }}
|
REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }}
|
||||||
@@ -61,6 +61,18 @@ jobs:
|
|||||||
set -eu
|
set -eu
|
||||||
registry="$(printf '%s' '${{ inputs.image_name }}' | cut -d/ -f1)"
|
registry="$(printf '%s' '${{ inputs.image_name }}' | cut -d/ -f1)"
|
||||||
printf '%s' "$REGISTRY_PASSWORD" | docker login "$registry" -u "$REGISTRY_USERNAME" --password-stdin
|
printf '%s' "$REGISTRY_PASSWORD" | docker login "$registry" -u "$REGISTRY_USERNAME" --password-stdin
|
||||||
|
if [ -n "${{ inputs.cache_image }}" ]; then
|
||||||
|
docker pull "${{ inputs.cache_image }}"
|
||||||
|
fi
|
||||||
|
- name: Build immutable candidate image
|
||||||
|
run: |
|
||||||
|
set -eu
|
||||||
|
cache_args=()
|
||||||
|
if [ -n "${{ inputs.cache_image }}" ]; then
|
||||||
|
cache_args+=(--cache-from "${{ inputs.cache_image }}")
|
||||||
|
fi
|
||||||
|
docker build --pull=false "${cache_args[@]}" -f "${{ inputs.dockerfile }}" \
|
||||||
|
-t "${{ inputs.image_name }}:sha-${{ gitea.sha }}" "${{ inputs.build_context }}"
|
||||||
docker push "${{ inputs.image_name }}:sha-${{ gitea.sha }}"
|
docker push "${{ inputs.image_name }}:sha-${{ gitea.sha }}"
|
||||||
- name: Candidate pull on Dev
|
- name: Candidate pull on Dev
|
||||||
if: ${{ inputs.deploy_service != '' && inputs.deploy_host != '' }}
|
if: ${{ inputs.deploy_service != '' && inputs.deploy_host != '' }}
|
||||||
|
|||||||
Reference in New Issue
Block a user