Skip to content

Build Images

Build Images #3221

Workflow file for this run

name: Build Images
on:
workflow_dispatch:
schedule:
- cron: "0 0/4 * * *"
env:
IMAGE: openscada
jobs:
check_version:
name: Checking for version update
runs-on: ubuntu-latest
outputs:
version: ${{ steps.ver.outputs.version }}
steps:
-
name: Checking version
id: ver
run: |
echo -n "Latest version: "
SRC_VERSION=$(curl -s http://ftp.oscada.org/OpenSCADA/Work/SrcTar.files | sed -e 's/openscada-1+\(r[0-9]\+\).*/\1/')
echo "${SRC_VERSION}"
echo -n "DockerHub version: "
DHUB_VERSION=$(curl -s "https://hub.docker.com/v2/repositories/${{secrets.DOCKERHUB_USERNAME}}/${{env.IMAGE}}/tags" | jq -r '.results | .[]? | .name' | grep -m1 r || true)
echo "${DHUB_VERSION}"
if [[ "${SRC_VERSION}" != "${DHUB_VERSION}" ]] || [[ ${{ github.event_name }} != "schedule" ]]; then
echo "version=${SRC_VERSION}" >> $GITHUB_OUTPUT
fi
build_docker:
name: Building and Pushing Images
needs: check_version
if: needs.check_version.outputs.version != ''
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
-
name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE }}
ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE }}
flavor: |
latest=true
tags: |
${{ needs.check_version.outputs.version }}
labels: |
org.opencontainers.image.title=openscada
org.opencontainers.image.source=https://github.com/dudanov/docker-openscada
org.opencontainers.image.authors=sergey.dudanov@gmail.com
org.opencontainers.image.description=OpenSCADA minimal image based on Alpine Linux.
org.opencontainers.image.licenses=GPL-2.0-or-later
-
name: Print Tags
run: |
echo "${{ steps.meta.outputs.tags }}"
-
name: Checkout
uses: actions/checkout@v3
-
name: Set up QEMU
uses: docker/setup-qemu-action@v2
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
-
name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Login to GHCR
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Building and Pushing Images
uses: docker/build-push-action@v4
with:
context: .
push: true
platforms: linux/amd64,linux/arm64,linux/armhf
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}