Added GitHub Action to update repository description

This commit is contained in:
Alexey Pustovalov 2021-02-15 17:22:27 +02:00
commit a8b10ab069
2 changed files with 85 additions and 83 deletions

View File

@ -9,6 +9,7 @@ on:
- '3.0' - '3.0'
- '4.0' - '4.0'
- '5.0' - '5.0'
- '5.2'
- 'trunk' - 'trunk'
paths-ignore: paths-ignore:
- '.env*' - '.env*'
@ -54,33 +55,29 @@ jobs:
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
steps: steps:
- uses: actions/checkout@v2 -
uses: actions/checkout@v2
-
- name: Install buildx name: Set up QEMU
env: uses: docker/setup-qemu-action@v1
DOCKER_CLI_EXPERIMENTAL: enabled -
run: | name: Set up Docker Buildx
docker pull -q multiarch/qemu-user-static:latest uses: docker/setup-buildx-action@v1
docker run --rm --privileged multiarch/qemu-user-static:latest --reset -p yes --credential yes -
docker buildx create --name builder-${GITHUB_SHA::8} --driver docker-container --use name: Login to DockerHub
uses: docker/login-action@v1
- name: Available platforms with:
env: username: ${{ secrets.DOCKER_USERNAME }}
DOCKER_CLI_EXPERIMENTAL: enabled password: ${{ secrets.DOCKER_PASSWORD }}
run: docker buildx inspect | grep Platforms
- name: Prepare platform list - name: Prepare platform list
id: platform id: platform
run: | run: |
DOCKER_PLATFORM="linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/s390x,linux/ppc64le" DOCKER_PLATFORM="linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le"
if [ "${{ matrix.os }}" == "ubuntu" ]; then if [ "${{ matrix.os }}" == "ubuntu" ]; then
DOCKER_PLATFORM="linux/amd64,linux/arm/v7,linux/arm64,linux/s390x,linux/ppc64le" DOCKER_PLATFORM="linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le"
fi
if [ "${{ matrix.os }}" == "ubuntu" ] && [ "${{ matrix.build }}" == "snmptraps" ]; then
DOCKER_PLATFORM="linux/amd64,linux/arm64"
fi fi
if [ "${{ matrix.os }}" == "centos" ]; then if [ "${{ matrix.os }}" == "centos" ]; then
@ -119,17 +116,12 @@ jobs:
TAGS_ARRAY+=("$IMAGE_NAME:${{ matrix.os }}-latest") TAGS_ARRAY+=("$IMAGE_NAME:${{ matrix.os }}-latest")
fi fi
TAGS=$(printf -- "--tag %s " "${TAGS_ARRAY[@]}") TAGS=$(printf -- "%s, " "${TAGS_ARRAY[@]}")
echo "::debug::Tags - ${TAGS}" echo "::debug::Tags - ${TAGS}"
echo ::set-output name=image_name::${IMAGE_NAME} echo ::set-output name=image_name::${IMAGE_NAME}
echo ::set-output name=image_tag_versions::$(printf -- "|%s" "${TAGS_ARRAY[@]}") echo ::set-output name=image_tag_versions::$(printf -- "%s," "${TAGS_ARRAY[@]}")
echo ::set-output name=buildx_args::--platform "${{ steps.platform.outputs.list }}" \
--build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \
--build-arg VCS_REF=${GITHUB_SHA::8} \
${TAGS} \
--file ./${{ matrix.build }}/${{ matrix.os }}/Dockerfile ./${{ matrix.build }}/${{ matrix.os }}
- name: Prepare environment (release) - name: Prepare environment (release)
if: github.event_name == 'release' && github.event.action == 'published' if: github.event_name == 'release' && github.event.action == 'published'
@ -153,68 +145,35 @@ jobs:
TAGS=$(printf -- "--tag %s " "${TAGS_ARRAY[@]}") TAGS=$(printf -- "--tag %s " "${TAGS_ARRAY[@]}")
echo ::set-output name=image_name::${IMAGE_NAME} echo ::set-output name=image_name::${IMAGE_NAME}
echo ::set-output name=image_tag_versions::$(printf -- "|%s" "${TAGS_ARRAY[@]}") echo ::set-output name=image_tag_versions::$(printf -- ",%s" "${TAGS_ARRAY[@]}")
echo ::set-output name=buildx_args::--platform "${{ steps.platform.outputs.list }}" \
--build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \
--build-arg VCS_REF=${GITHUB_SHA::8} \
$TAGS \
--file ./${{ matrix.build }}/${{ matrix.os }}/Dockerfile ./${{ matrix.build }}/${{ matrix.os }}
- name: Build images - name: Prepare tags
env: id: prepare_tags
DOCKER_CLI_EXPERIMENTAL: enabled
run: | run: |
if [ ! -z "${{ steps.prepare_push.outputs.buildx_args }}" ]; then if [ ! -z "${{ steps.prepare_push.outputs.image_tag_versions }}" ]; then
BUILDX_ARGS="${{ steps.prepare_push.outputs.buildx_args }}" TAGS="${{ steps.prepare_push.outputs.image_tag_versions }}"
elif [ ! -z "${{ steps.prepare_release.outputs.buildx_args }}" ]; then IMAGE_NAME="${{ steps.prepare_push.outputs.image_name }}"
BUILDX_ARGS="${{ steps.prepare_release.outputs.buildx_args }}" elif [ ! -z "${{ steps.prepare_release.outputs.image_tag_versions }}" ]; then
TAGS="${{ steps.prepare_release.outputs.image_tag_versions }}"
IMAGE_NAME="${{ steps.prepare_release.outputs.image_name }}"
else else
exit 1 exit 1
fi fi
docker buildx build --cache-to "type=local,dest=/tmp/.buildx-cache" \ echo ::set-output name=image_tag_versions::${TAGS}
--output "type=image,push=false" \ echo ::set-output name=image_name::${IMAGE_NAME}
${BUILDX_ARGS}
- name: Docker Hub login -
if: success() name: Build and push
uses: docker/login-action@v1 id: docker_build
uses: docker/build-push-action@v2
with: with:
username: ${{ secrets.DOCKER_USERNAME }} context: ./${{ matrix.build }}/${{ matrix.os }}
password: ${{ secrets.DOCKER_PASSWORD }} file: ./${{ matrix.build }}/${{ matrix.os }}/Dockerfile
platforms: ${{ steps.platform.outputs.list }}
push: ${{ secrets.AUTO_PUSH_IMAGES }}
tags: ${{ steps.prepare_tags.outputs.image_tag_versions }}
- name: Push images from cache -
if: success() name: Image digest
env: run: echo ${{ steps.docker_build.outputs.digest }}
DOCKER_CLI_EXPERIMENTAL: enabled
run: |
if [ ! -z "${{ steps.prepare_push.outputs.buildx_args }}" ]; then
BUILDX_ARGS="${{ steps.prepare_push.outputs.buildx_args }}"
elif [ ! -z "${{ steps.prepare_release.outputs.buildx_args }}" ]; then
BUILDX_ARGS="${{ steps.prepare_release.outputs.buildx_args }}"
fi
docker buildx build --cache-from "type=local,src=/tmp/.buildx-cache" \
--output "type=image,push=${{ secrets.AUTO_PUSH_IMAGES }}" \
${BUILDX_ARGS}
- name: Inspect images
run: |
echo "::debug::push - ${{ steps.prepare_push.outputs.buildx_args }}"
echo "::debug::release - ${{ steps.prepare_release.outputs.buildx_args }}"
if [ ! -z "${{ steps.prepare_push.outputs.image_tag_versions }}" ]; then
IMAGE_TAG_VERSIONS="${{ steps.prepare_push.outputs.image_tag_versions }}"
echo "::debug::tags push raw - $IMAGE_TAG_VERSIONS"
elif [ ! -z "${{ steps.prepare_release.outputs.image_tag_versions }}" ]; then
IMAGE_TAG_VERSIONS="${{ steps.prepare_release.outputs.image_tag_versions }}"
echo "::debug::tags release raw - $IMAGE_TAG_VERSIONS"
fi
IMAGE_TAG_VERSIONS=${IMAGE_TAG_VERSIONS%%+(|)}
IFS='|' read -r -a IMAGE_TAG_VERSIONS <<< $IMAGE_TAG_VERSIONS
for version in ${IMAGE_TAG_VERSIONS[@]}; do
echo "Checking \"$version\"... "
docker buildx imagetools inspect $version
done

View File

@ -0,0 +1,43 @@
name: DockerHub Description
on:
push:
branches:
- 'trunk'
paths:
- "*/*/README.md"
workflow_dispatch:
jobs:
main:
runs-on: ubuntu-latest
env:
DOCKER_REPOSITORY: "zabbix"
SUBDIR: "alpine"
strategy:
fail-fast: false
matrix:
build:
- agent
- agent2
- java-gateway
- proxy-mysql
- proxy-sqlite3
- server-mysql
- server-pgsql
- snmptraps
- web-apache-mysql
- web-apache-pgsql
- web-nginx-mysql
- web-nginx-pgsql
steps:
-
uses: actions/checkout@v2
-
name: Update DockerHub repo description
uses: peter-evans/dockerhub-description@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
repository: ${{ env.DOCKER_REPOSITORY }}/zabbix-${{ matrix.build }}
readme-filepath: ./${{ matrix.build }}/${{ env.SUBDIR }}/README.md