Skip to content

Further cleanup of or-entrypoint.sh #75

Further cleanup of or-entrypoint.sh

Further cleanup of or-entrypoint.sh #75

Workflow file for this run

# This is a basic workflow to help you get started with Actions
name: Docker Image
# Controls when the action will run.
on:
# When a release is published
release:
types: [published]
# Push excluding tags and workflow changes
push:
branches:
- main
tags-ignore:
- '*.*'
paths-ignore:
- '**/*.md'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
image_postgresql_amd64:
runs-on: ubuntu-latest
steps:
- name: Free up disk space
run: |
echo "Disk space before cleanup:"
df -h
# Remove large directories
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
sudo rm -rf /usr/local/.ghcup
sudo rm -rf /opt/hostedtoolcache/CodeQL
# Remove large packages
sudo apt-get remove -y '^aspnetcore-.*' || true
sudo apt-get remove -y '^dotnet-.*' || true
sudo apt-get remove -y '^llvm-.*' || true
sudo apt-get remove -y 'php.*' || true
sudo apt-get remove -y '^mongodb-.*' || true
sudo apt-get remove -y '^mysql-.*' || true
sudo apt-get remove -y azure-cli google-chrome-stable firefox powershell mono-devel libgl1-mesa-dri || true
sudo apt-get remove -y google-cloud-sdk google-cloud-cli || true
sudo apt-get autoremove -y
sudo apt-get clean
# Remove Docker images
sudo docker image prune --all --force
# Remove swap storage
sudo swapoff -a || true
sudo rm -f /mnt/swapfile || true
echo "Disk space after cleanup:"
df -h
- name: Set tags
run: |
if [ -z "$TAG" ]; then
echo "TAG=-t openremote/postgresql:develop-amd64" >> $GITHUB_ENV
else
echo "TAG=-t openremote/postgresql:$TAG-amd64" >> $GITHUB_ENV
fi
env:
TAG: ${{ github.event.release.tag_name }}
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- name: set up QEMU
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392
with:
platforms: all
- name: install buildx
id: buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435
with:
version: latest
install: true
- name: Login to DockerHub
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef
with:
username: ${{ secrets._TEMP_DOCKERHUB_USER }}
password: ${{ secrets._TEMP_DOCKERHUB_PASSWORD }}
- name: Build amd64 image locally
run: |
docker buildx build \
--build-arg GIT_COMMIT=${{ github.sha }} \
--load \
--platform linux/amd64 \
--no-cache-filter trimmed \
--no-cache-filter trimmed-all \
$TAG .
# - name: Install slim toolkit
# run: |
# curl -sL https://raw.githubusercontent.com/slimtoolkit/slim/master/scripts/install-slim.sh | sudo -E bash -
#
# - name: Slim the image
# run: |
# # Extract image name from TAG (remove -t prefix)
# IMAGE_NAME=$(echo "$TAG" | sed 's/-t //')
# chmod +x ./slim-image.sh
# ./slim-image.sh "$IMAGE_NAME" "${IMAGE_NAME}-slim" amd64
# # Replace original with slim version
# docker tag ${IMAGE_NAME}-slim $IMAGE_NAME
#
- name: Push amd64 image
run: |
IMAGE_NAME=$(echo "$TAG" | sed 's/-t //')
docker push $IMAGE_NAME
image_postgresql_arm64:
needs: image_postgresql_amd64
runs-on: ubuntu-latest
steps:
- name: Free up disk space
run: |
echo "Disk space before cleanup:"
df -h
# Remove large directories
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
sudo rm -rf /usr/local/.ghcup
sudo rm -rf /opt/hostedtoolcache/CodeQL
# Remove large packages
sudo apt-get remove -y '^aspnetcore-.*' || true
sudo apt-get remove -y '^dotnet-.*' || true
sudo apt-get remove -y '^llvm-.*' || true
sudo apt-get remove -y 'php.*' || true
sudo apt-get remove -y '^mongodb-.*' || true
sudo apt-get remove -y '^mysql-.*' || true
sudo apt-get remove -y azure-cli google-chrome-stable firefox powershell mono-devel libgl1-mesa-dri || true
sudo apt-get remove -y google-cloud-sdk google-cloud-cli || true
sudo apt-get autoremove -y
sudo apt-get clean
# Remove Docker images
sudo docker image prune --all --force
# Remove swap storage
sudo swapoff -a || true
sudo rm -f /mnt/swapfile || true
echo "Disk space after cleanup:"
df -h
- name: Set tags
run: |
if [ -z "$TAG" ]; then
echo "TAG=-t openremote/postgresql:develop-arm64" >> $GITHUB_ENV
else
echo "TAG=-t openremote/postgresql:$TAG-arm64" >> $GITHUB_ENV
fi
env:
TAG: ${{ github.event.release.tag_name }}
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
- name: set up QEMU
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392
with:
platforms: all
- name: install buildx
id: buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435
with:
version: latest
install: true
- name: Login to DockerHub
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef
with:
username: ${{ secrets._TEMP_DOCKERHUB_USER }}
password: ${{ secrets._TEMP_DOCKERHUB_PASSWORD }}
- name: Build arm64 image locally
run: |
docker buildx build \
--build-arg GIT_COMMIT=${{ github.sha }} \
--load \
--platform linux/arm64 \
--no-cache-filter trimmed \
--no-cache-filter trimmed-all \
$TAG .
- name: Install slim toolkit
run: |
curl -sL https://raw.githubusercontent.com/slimtoolkit/slim/master/scripts/install-slim.sh | sudo -E bash -
# - name: Slim the image
# run: |
# # Extract image name from TAG (remove -t prefix)
# IMAGE_NAME=$(echo "$TAG" | sed 's/-t //')
# chmod +x ./slim-image.sh
# ./slim-image.sh "$IMAGE_NAME" "${IMAGE_NAME}-slim" arm64
# # Replace original with slim version
# docker tag ${IMAGE_NAME}-slim $IMAGE_NAME
- name: Push arm64 image
run: |
IMAGE_NAME=$(echo "$TAG" | sed 's/-t //')
docker push $IMAGE_NAME
create_manifest:
needs: [image_postgresql_amd64, image_postgresql_arm64]
runs-on: ubuntu-latest
steps:
- name: Set tags
run: |
if [ -z "$TAG" ]; then
echo "TAG=openremote/postgresql:develop" >> $GITHUB_ENV
echo "TAG_AMD64=openremote/postgresql:develop-amd64" >> $GITHUB_ENV
echo "TAG_ARM64=openremote/postgresql:develop-arm64" >> $GITHUB_ENV
else
echo "TAG=openremote/postgresql:$TAG" >> $GITHUB_ENV
echo "TAG_LATEST=openremote/postgresql:latest" >> $GITHUB_ENV
echo "TAG_AMD64=openremote/postgresql:$TAG-amd64" >> $GITHUB_ENV
echo "TAG_ARM64=openremote/postgresql:$TAG-arm64" >> $GITHUB_ENV
fi
env:
TAG: ${{ github.event.release.tag_name }}
- name: Login to DockerHub
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef
with:
username: ${{ secrets._TEMP_DOCKERHUB_USER }}
password: ${{ secrets._TEMP_DOCKERHUB_PASSWORD }}
- name: Create and push multi-arch manifest
run: |
docker buildx imagetools create -t $TAG $TAG_AMD64 $TAG_ARM64
if [ ! -z "$TAG_LATEST" ]; then
docker buildx imagetools create -t $TAG_LATEST $TAG_AMD64 $TAG_ARM64
fi