Skip to content
Snippets Groups Projects
Unverified Commit 1e0163a4 authored by Michael Kriese's avatar Michael Kriese Committed by GitHub
Browse files

chore(ci): add docker cache (#5445)

parent 3de1b6e9
Branches
No related tags found
No related merge requests found
name: Docker Images CI name: Docker Images CI
on: [pull_request] on:
push:
branches:
- master
pull_request:
env: env:
PLATFORM: linux/amd64 PLATFORM: linux/amd64
# TODO: Replace with renovate/renovate
DOCKER_REPO: renovate/cache-test
jobs: jobs:
build: build:
name: Build image name: Build image
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 20
strategy: strategy:
matrix: matrix:
file: [Dockerfile, Dockerfile.slim] tag: [latest, slim]
env:
DOCKER_FILE: Dockerfile.${{ matrix.tag }}
DOCKER_TAG: ${{ matrix.tag }}
steps: steps:
- uses: actions/checkout@v2 - name: Overwrite env for latest tag
with: if: matrix.tag == 'latest'
fetch-depth: 1 run: |
echo "::set-env name=DOCKER_FILE::Dockerfile"
- name: Set up Docker Buildx - name: Set up Docker Buildx
id: buildx id: buildx
...@@ -25,16 +39,34 @@ jobs: ...@@ -25,16 +39,34 @@ jobs:
with: with:
version: v0.3.1 version: v0.3.1
- uses: actions/checkout@v2
- name: Build the Docker image - name: Build the Docker image
run: | run: |
docker buildx build \ docker buildx build \
--platform ${PLATFORM} \ --platform ${PLATFORM} \
--output "type=docker" \ --output=type=docker \
--tag renovate \ --cache-from=${DOCKER_REPO}:cache-${DOCKER_TAG} \
--file ./${{ matrix.file }} . --tag=renovate \
--file=./${DOCKER_FILE} .
- name: Test the Docker image
run: |
docker run --rm -t renovate --version
- name: Image history - name: Image history
run: docker history renovate run: docker history renovate
- name: Image size - name: Image size
run: docker image ls | grep renovate run: docker image ls | grep renovate
- name: Push the Docker image
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
run: |
echo "${{ secrets.DOCKER_RENOVATERELEASE_TOKEN }}" | docker login -u renovaterelease --password-stdin
docker buildx build \
--platform ${PLATFORM} \
--output=type=registry \
--cache-from=${DOCKER_REPO}:cache-${DOCKER_TAG} \
--cache-to=${DOCKER_REPO}:cache-${DOCKER_TAG} \
--tag=${DOCKER_REPO}:test-${DOCKER_TAG} \
--file=./${DOCKER_FILE} .
name: Release CI
on:
push:
tags:
- '[0-9]+.[0-9]+.[0-9]+'
env:
PLATFORM: linux/amd64
# TODO: Replace with renovate/renovate
DOCKER_REPO: renovate/cache-test
jobs:
docker-release:
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
matrix:
tag: [latest, slim]
env:
DOCKER_FILE: Dockerfile.${{ matrix.tag }}
DOCKER_TAG: ${{ matrix.tag }}
steps:
- name: Overwrite env for latest tag
if: matrix.tag == 'latest'
run: |
echo "::set-env name=DOCKER_FILE::Dockerfile"
- name: Set up Docker Buildx
id: buildx
uses: crazy-max/ghaction-docker-buildx@v1
with:
version: v0.3.1
- uses: actions/checkout@v2
- name: Build the Docker image
run: |
docker buildx build \
--platform ${PLATFORM} \
--output=type=docker \
--cache-from=${DOCKER_REPO}:cache-${DOCKER_TAG} \
--tag=renovate \
--file=./${DOCKER_FILE} .
- name: Test the Docker image
run: |
docker run --rm -t renovate --version
- name: Image history
run: docker history renovate
- name: Image size
run: docker image ls | grep renovate
- name: Generate tags
run: |
# Strip git ref prefix from version
VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,')
# Tag base
tags="${DOCKER_REPO}:${DOCKER_TAG}"
echo "Tagging ${DOCKER_REPO}:${DOCKER_TAG}"
SEMVER_REGEX="^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)?$"
if ! [[ "$VERSION" =~ $SEMVER_REGEX ]]; then
echo Not a semver tag - skipping
exit 1
fi
major=${BASH_REMATCH[1]}
minor=${BASH_REMATCH[2]}
patch=${BASH_REMATCH[3]}
slim=${DOCKER_TAG#latest}
slim=${slim:+-}${slim}
# Tag for versions additional
for tag in {"${major}${slim}","${major}.${minor}${slim}","${major}.${minor}.${patch}${slim}"}; do
echo "Tagging ${DOCKER_REPO}:${tag}"
tags+=",${DOCKER_REPO}:${tag}"
done
echo "::set-env name=TAGS::${tags}"
- name: Push the Docker image
run: |
echo "${{ secrets.DOCKER_RENOVATERELEASE_TOKEN }}" | docker login -u renovaterelease --password-stdin
docker buildx build \
--platform ${PLATFORM} \
--output=type=registry \
--cache-from=${DOCKER_REPO}:cache-${DOCKER_TAG} \
--tag=${TAGS} \
--file=./${DOCKER_FILE} .
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment