Skip to content

Commit

Permalink
Merge pull request #24 from docksal/develop
Browse files Browse the repository at this point in the history
Release 1.4.0
  • Loading branch information
lmakarov authored May 17, 2024
2 parents 351d5ed + ffafedc commit 3cd5c35
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 78 deletions.
4 changes: 2 additions & 2 deletions .github/scripts/docker-tag-delete.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ if [[ "${1}" == "" ]]; then
exit 1
else
# Split image:tag
IFS=$':' read IMAGE TAG <<< ${1};
IFS=$':' read IMAGE TAG <<< "${1}";
# Remove registry prefix from image if present
IMAGE=${IMAGE#"docker.io/"}
fi
Expand All @@ -42,4 +42,4 @@ output=$(curl -sI "https://hub.docker.com/v2/repositories/${IMAGE}/tags/${TAG}/"
)

# Return and error if HTTP response code is not 204
echo "${output}" | grep "HTTP/1.1 204 NO CONTENT"
echo "${output}" | grep -i "HTTP/1.1 204 No Content"
4 changes: 2 additions & 2 deletions .github/scripts/docker-tags.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
# Declare expected variables
IMAGE=${IMAGE} # docksal/cli
VERSION_PREFIX=${VERSION_PREFIX} # php
VERSION=${VERSION} # 7.4
VERSION=${VERSION} # 8.1
VERSION_SUFFIX=${VERSION_SUFFIX} # ide
REGISTRY="${REGISTRY}" # ghcr.io
GITHUB_REF=${GITHUB_REF} # refs/heads/develop, refs/heads/master, refs/tags/v1.0.0
Expand All @@ -35,7 +35,7 @@ set_output() {
# Print with new lines for output in build logs
(IFS=$'\n'; echo "${outputArr[*]}")
# Using newlines in output variables does not seem to work, so we'll use comas
(IFS=$','; echo "::set-output name=tags::${outputArr[*]}")
(IFS=$','; echo tags="${outputArr[*]}" | tee -a ${GITHUB_OUTPUT})
}

# Image tags
Expand Down
117 changes: 46 additions & 71 deletions .github/workflows/default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,18 @@ defaults:

env:
IMAGE: docksal/mariadb
LATEST_VERSION: "10.11"
#DOCKSAL_VERSION: develop

jobs:
build:
name: "Build: ${{ matrix.version }}/${{ matrix.arch }}"
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04

strategy:
fail-fast: false # Don't cancel other jobs if one fails
matrix:
include:
-
arch: amd64
version: "10.3"
-
arch: arm64
version: "10.3"
-
arch: amd64
version: "10.4"
Expand All @@ -53,6 +48,12 @@ jobs:
-
arch: arm64
version: "10.6"
-
arch: amd64
version: "10.11"
-
arch: arm64
version: "10.11"

env:
ARCH: ${{ matrix.arch }}
Expand All @@ -64,7 +65,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
-
name: Environment variables
run: |
Expand All @@ -73,39 +74,27 @@ jobs:
echo BUILD_IMAGE_TAG="${IMAGE}:${VERSION_PREFIX}${VERSION}-build" | tee -a ${GITHUB_ENV}
# Pull the host public SSH key at runtime instead of relying on a static value stored in secrets.
echo ARM64_HOST_SSH_CERT="$(ssh-keyscan -t rsa ${{ secrets.ARM64_HOST }} 2>/dev/null)" | tee -a ${GITHUB_ENV}
# -
# # Switch docker context to a remote arm64 host
# # Used for building heavy images that take too long to build using QEMU + for native arm64 testing.
# name: Switch to arm64 builder host
# if: ${{ env.ARCH == 'arm64' }}
# uses: arwynfr/actions-docker-context@v2
# with:
# docker_host: "ssh://ubuntu@${{ secrets.ARM64_HOST }}"
# context_name: arm64-host
# ssh_key: "${{ secrets.ARM64_HOST_SSH_KEY }}"
# ssh_cert: "${{ env.ARM64_HOST_SSH_CERT }}"
# use_context: true
-
name: Set up QEMU
uses: docker/setup-qemu-action@v1
uses: docker/setup-qemu-action@v3
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
uses: docker/setup-buildx-action@v3
-
name: Check Docker
run: |
docker version
docker info
-
name: Login to Docker Hub
uses: docker/login-action@v1
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
# Build and cache image in the registry
name: Build image
uses: docker/build-push-action@v2
uses: docker/build-push-action@v5
with:
context: ${{ env.BUILD_DIR }}
file: ${{ env.BUILD_DIR }}/Dockerfile
Expand All @@ -116,28 +105,31 @@ jobs:
# Push intermediate arch-specific build tag to repo
tags: ${{ env.BUILD_IMAGE_TAG }}-${{ env.GIT_SHA7 }}-${{ env.ARCH }}
push: ${{ github.event_name != 'pull_request' }} # Don't push for PRs
# Disable automatic image attestations
# With image attestations enabled, the image tag pushed to the registry is a manifest list.
# That makes it impossible to stitch different platform images together in a manifest list, since you
# cannot have a manifest list of manifest lists.
# See https://docs.docker.com/build/attestations/attestation-storage/
# TODO: Refactor to allow for image attestations
provenance: false
sbom: false
# BUILD_IMAGE_TAG - persistent multi-arch tag, updated at the end of the build (success or failure)
cache-from: type=registry,ref=${{ env.BUILD_IMAGE_TAG }}
cache-to: type=inline # Write the cache metadata into the image configuration
# Use registry cache with max mode to cahce all image layers in the registry
cache-from: type=registry,ref=${{ env.BUILD_IMAGE_TAG }}-cache-${{ env.ARCH }}
cache-to: type=registry,ref=${{ env.BUILD_IMAGE_TAG }}-cache-${{ env.ARCH }},mode=max

test:
name: "Test: ${{ matrix.version }}/${{ matrix.arch }}"
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
needs: build

strategy:
fail-fast: false # Don't cancel other jobs if one fails
matrix:
include:
-
arch: amd64
version: "10.3"
# Disabled arm64 tests.
# TODO: Refactor tests to be compatible with a remote host test runner.
# TODO: Remember to re-enabled the test results check in "push".
# -
# arch: arm64
# version: "10.3"
-
arch: amd64
version: "10.4"
Expand All @@ -156,6 +148,12 @@ jobs:
# -
# arch: arm64
# version: "10.6"
-
arch: amd64
version: "10.11"
# -
# arch: arm64
# version: "10.11"

env:
ARCH: ${{ matrix.arch }}
Expand All @@ -165,12 +163,10 @@ jobs:
steps:
-
name: Setup Bats
uses: mig4/setup-bats@v1
with:
bats-version: "1.3.0"
uses: bats-core/[email protected]
-
name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
-
name: Environment variables
run: |
Expand All @@ -179,33 +175,11 @@ jobs:
echo BUILD_IMAGE_TAG="${IMAGE}:${VERSION_PREFIX}${VERSION}-build" | tee -a ${GITHUB_ENV}
# Pull the host public SSH key at runtime instead of relying on a static value stored in secrets.
echo ARM64_HOST_SSH_CERT="$(ssh-keyscan -t rsa ${{ secrets.ARM64_HOST }} 2>/dev/null)" | tee -a ${GITHUB_ENV}
-
# Switch docker context to a remote arm64 host
# Used for building heavy images that take too long to build using QEMU + for native arm64 testing.
name: Switch to arm64 builder host
if: ${{ env.ARCH == 'arm64' }}
uses: arwynfr/actions-docker-context@v2
with:
docker_host: "ssh://ubuntu@${{ secrets.ARM64_HOST }}"
context_name: arm64-host
ssh_key: "${{ secrets.ARM64_HOST_SSH_KEY }}"
ssh_cert: "${{ env.ARM64_HOST_SSH_CERT }}"
use_context: true
-
name: Check Docker
run: |
docker version
docker info
# -
# name: Test preparations
# working-directory: ${{ env.BUILD_CONTEXT }}
# env:
# BUILD_IMAGE_TAG: ${{ env.BUILD_IMAGE_TAG }}-${{ env.GIT_SHA7 }}-${{ env.ARCH }}
# run: |
# # Install Docksal using the passed DOCKSAL_VERSION value
# curl -sSL http://get.docksal.io | bash
# # Start the service using the build image tag
# make start
-
# Run tests
name: Test
Expand All @@ -222,14 +196,16 @@ jobs:
# Dynamic variable names cannot be used when mapping step outputs to job outputs.
# Step outputs cannot be accessed directly from other jobs. Dead end.
- name: Store test results
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: test-results
name: test-results-${{ env.GIT_SHA7 }}-${{ env.VERSION_PREFIX }}${{ env.VERSION }}-${{ env.ARCH }}
path: ${{ github.workspace }}/test-results-*.txt
if-no-files-found: error
overwrite: true

push:
name: "Push: ${{ matrix.version }}/multi"
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04

# Wait for test to either succeed or fail
needs: test
Expand All @@ -238,10 +214,10 @@ jobs:
strategy:
matrix:
version:
- "10.3"
- "10.4"
- "10.5"
- "10.6"
- "10.11"

env:
VERSION_PREFIX: ""
Expand All @@ -250,27 +226,26 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
-
name: Environment variables
run: |
# Export variables for further steps
echo GIT_SHA7="${GITHUB_SHA:0:7}" | tee -a ${GITHUB_ENV}
echo BUILD_IMAGE_TAG="${IMAGE}:${VERSION_PREFIX}${VERSION}-build" | tee -a ${GITHUB_ENV}
# Pull the host public SSH key at runtime instead of relying on a static value stored in secrets.
echo ARM64_HOST_SSH_CERT="$(ssh-keyscan -t rsa ${{ secrets.ARM64_HOST }} 2>/dev/null)" | tee -a ${GITHUB_ENV}
-
# Login to Docker Hub
name: Login to Docker Hub
uses: docker/login-action@v1
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Retrieve test results
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4
with:
name: test-results
pattern: test-results-${{ env.GIT_SHA7 }}-*
merge-multiple: true
-
# Generate persistent tags (edge, stable, release)
name: Docker image tags
Expand Down Expand Up @@ -307,5 +282,5 @@ jobs:
docker manifest push ${tag}
done
# Clean up intermediate arch-specific image tags (DockerHub only)
.github/scripts/docker-tag-delete.sh ${{ env.BUILD_IMAGE_TAG }}-${{ env.GIT_SHA7 }}-amd64
.github/scripts/docker-tag-delete.sh ${{ env.BUILD_IMAGE_TAG }}-${{ env.GIT_SHA7 }}-arm64
.github/scripts/docker-tag-delete.sh "${{ env.BUILD_IMAGE_TAG }}-${{ env.GIT_SHA7 }}-amd64"
.github/scripts/docker-tag-delete.sh "${{ env.BUILD_IMAGE_TAG }}-${{ env.GIT_SHA7 }}-arm64"
4 changes: 4 additions & 0 deletions 10.3/default.cnf → 10.11/default.cnf
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,9 @@ innodb_log_file_size = 128MB

innodb_file_per_table = 1

# See https://github.com/docksal/service-db/pull/1
#innodb_file_format = Barracuda
#innodb_large_prefix = 1

# Max packets
max_allowed_packet = 128M
2 changes: 1 addition & 1 deletion 10.3/mysql-variables.txt → 10.11/mysql-variables.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8mb4
character_set_server utf8mb4
character_set_system utf8
character_set_system utf8mb3
collation_connection utf8mb4_unicode_ci
collation_database utf8mb4_unicode_ci
collation_server utf8mb4_unicode_ci
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ This image(s) is part of the [Docksal](http://docksal.io) image library.

## Versions

- `docksal/mariadb:10.3`
- `docksal/mariadb:10.4`
- `docksal/mariadb:10.5`
- `docksal/mariadb:10.6`, `docksal/mariadb:latest`
- `docksal/mariadb:10.6` (LTS)
- `docksal/mariadb:10.11` (LTS), `docksal/mariadb:latest`

0 comments on commit 3cd5c35

Please sign in to comment.