Skip to content

Version 1.4.1

Version 1.4.1 #11

Workflow file for this run

name: Publish Docker image
on:
workflow_dispatch:
release:
types: [published]
jobs:
push_to_registry:
name: Push Docker image to Docker Hub
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
attestations: write
id-token: write
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '22'
- name: Install dependencies
run: npm install
working-directory: frontend
- name: Build frontend
run: npm run build
working-directory: frontend
- name: Extract version from tag
id: extract_version
run: |
if [ "${{ github.event_name }}" = "release" ]; then
VERSION=${{ github.event.release.tag_name }}
# Remove 'v' prefix if present
VERSION=${VERSION#v}
echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "is_release=true" >> $GITHUB_OUTPUT
else
echo "version=latest" >> $GITHUB_OUTPUT
echo "is_release=false" >> $GITHUB_OUTPUT
fi
- name: Log in to Docker Hub
uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Create builder instance
run: docker buildx create --name nevuBuilder --use
- name: Build and push the amd64 image
run: |
if [ "${{ steps.extract_version.outputs.is_release }}" = "true" ]; then
docker buildx build --platform linux/amd64 \
-t ipmake/nevu:latest-amd64 \
-t ipmake/nevu:${{ steps.extract_version.outputs.version }}-amd64 \
. --push
else
docker buildx build --platform linux/amd64 -t ipmake/nevu:latest-amd64 . --push
fi
- name: Build and push the arm64 image
run: |
if [ "${{ steps.extract_version.outputs.is_release }}" = "true" ]; then
docker buildx build --platform linux/arm64 \
-t ipmake/nevu:latest-arm64 \
-t ipmake/nevu:${{ steps.extract_version.outputs.version }}-arm64 \
. --push
else
docker buildx build --platform linux/arm64 -t ipmake/nevu:latest-arm64 . --push
fi
- name: Build and push multi-platform Docker image
run: |
if [ "${{ steps.extract_version.outputs.is_release }}" = "true" ]; then
# Create versioned multi-platform image
docker buildx imagetools create \
--tag ipmake/nevu:${{ steps.extract_version.outputs.version }} \
ipmake/nevu:${{ steps.extract_version.outputs.version }}-amd64 \
ipmake/nevu:${{ steps.extract_version.outputs.version }}-arm64
# Create latest multi-platform image
docker buildx imagetools create \
--tag ipmake/nevu:latest \
ipmake/nevu:latest-amd64 \
ipmake/nevu:latest-arm64
else
docker buildx imagetools create --tag ipmake/nevu:latest ipmake/nevu:latest-amd64 ipmake/nevu:latest-arm64
fi