Skip to content

Commit

Permalink
Merge pull request #12 from volker76/arm64_issue#11
Browse files Browse the repository at this point in the history
Arm64 issue#11
  • Loading branch information
volker76 committed Nov 4, 2023
2 parents b46d765 + 970c273 commit 65bab00
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 42 deletions.
40 changes: 20 additions & 20 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,23 @@ jobs:
- name: Git describe
id: ghd
uses: proudust/gh-describe@v1

# Extract metadata (tags, labels) for Docker
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=schedule
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
#type=semver,pattern={{major}}.{{minor}}
#type=semver,pattern={{major}}
#type=sha
type=raw,value=latest,enable={{is_default_branch}}
# Add support for more platforms with QEMU (optional)
# https://github.com/docker/setup-qemu-action
Expand All @@ -56,23 +73,6 @@ jobs:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}

# Extract metadata (tags, labels) for Docker
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=schedule
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
#type=semver,pattern={{major}}.{{minor}}
#type=semver,pattern={{major}}
#type=sha
type=raw,value=latest,enable={{is_default_branch}}
# Build and push Docker image with Buildx (don't push on PR)
# https://github.com/docker/build-push-action
- name: Build and push Docker image
Expand All @@ -83,9 +83,9 @@ jobs:
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6
# cache-from: type=gha
# cache-to: type=gha,mode=max
platforms: linux/arm64,linux/amd64,linux/arm/v7
build-args: |
GIT_COMMIT=${{ steps.ghd.outputs.describe }}
84 changes: 62 additions & 22 deletions tuya_mqtt.net/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
FROM --platform=$TARGETPLATFORM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
ARG DEBUGHELPER
ARG TARGETPLATFORM
ARG TARGETOS
ARG TARGETARCH
ARG TARGETVARIANT
ARG BUILDPLATFORM
ARG BUILDOS
ARG BUILDARCH
ARG BUILDVARIANT
ARG GIT_COMMIT

ENV DOTNET_CLI_HOME=/tmp
WORKDIR /app
EXPOSE 80
ARG DEBUGHELPER

ENV TZ=EUROPE/Berlin
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
HEALTHCHECK CMD curl --fail http://localhost:80/health || exit
Expand All @@ -14,46 +25,75 @@ RUN if [ "$DEBUGHELPER" = "yes" ] ; then \
apt install -y arping inetutils-ping libnet-ifconfig-wrapper-perl mc \
; fi


FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:7.0 AS build
ARG DEBUGHELPER
ARG TARGETPLATFORM
ARG TARGETOS
ARG TARGETARCH
ARG TARGETVARIANT
ARG BUILDPLATFORM
ARG BUILDOS
ARG BUILDARCH
ARG BUILDVARIANT
ARG GIT_COMMIT
ENV DOTNET_CLI_HOME=/tmp

WORKDIR /src

COPY ["tuya_mqtt.net.csproj", "."]
ENV DOTNET_CLI_HOME=/tmp
RUN dotnet restore "tuya_mqtt.net.csproj"

RUN dotnet --info

COPY . .
WORKDIR "/src/."
ARG BUILDPLATFORM
ARG TARGETPLATFORM
ARG GIT_COMMIT

RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
RID=linux-x64 ; \
RID=linux-x64 ; \
elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
RID=linux-arm64 ; \
RID=linux-arm64 ; \
elif [ "$TARGETPLATFORM" = "linux/arm/v7" ]; then \
RID=linux-arm ; \
RID=linux-arm ; \
elif [ "$TARGETPLATFORM" = "linux/arm/v6" ]; then \
RID=linux-arm ; \
RID=linux-arm ; \
fi \
&& echo "target $TARGETPLATFORM build $BUILDPLATFORM RID $RID" \
&& echo "Building on $BUILDPLATFORM, targeting $TARGETPLATFORM" \
&& echo "Building on ${BUILDOS} and ${BUILDARCH} with optional variant ${BUILDVARIANT}" \
&& echo "Targeting ${TARGETOS} and ${TARGETARCH} with optional variant ${TARGETVARIANT}" \
&& echo "RID is ${RID}" \
&& dotnet restore -r $RID "tuya_mqtt.net.csproj" \
&& date > "/src/Resources/BuildDate.txt" \
&& echo $GIT_COMMIT >> "/src/Resources/BuildDate.txt" \
&& dotnet build "tuya_mqtt.net.csproj" -r $RID --self-contained -c Release -o /app/build
&& dotnet build "tuya_mqtt.net.csproj" -r $RID --no-restore -c Release -o /app/build

FROM build AS publish
ARG BUILDPLATFORM
FROM --platform=$TARGETPLATFORM build AS publish
ARG DEBUGHELPER
ARG TARGETPLATFORM
ARG TARGETOS
ARG TARGETARCH
ARG TARGETVARIANT
ARG BUILDPLATFORM
ARG BUILDOS
ARG BUILDARCH
ARG BUILDVARIANT
ARG GIT_COMMIT

RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
RID=linux-x64 ; \
RID=linux-x64 ; \
elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
RID=linux-arm64 ; \
RID=linux-arm64 ; \
elif [ "$TARGETPLATFORM" = "linux/arm/v7" ]; then \
RID=linux-arm ; \
RID=linux-arm ; \
elif [ "$TARGETPLATFORM" = "linux/arm/v6" ]; then \
RID=linux-arm ; \
RID=linux-arm ; \
fi \
&& echo "target $TARGETPLATFORM build $BUILDPLATFORM RID $RID" \
&& dotnet publish "tuya_mqtt.net.csproj" -r $RID --self-contained false -c Release -o /app/publish /p:UseAppHost=false
&& echo "Publishing on $BUILDPLATFORM, targeting $TARGETPLATFORM" \
&& echo "Publishing on ${BUILDOS} and ${BUILDARCH} with optional variant ${BUILDVARIANT}" \
&& echo "Targeting ${TARGETOS} and ${TARGETARCH} with optional variant ${TARGETVARIANT}" \
&& echo "RID is ${RID}" \
&& dotnet publish "tuya_mqtt.net.csproj" -r $RID --self-contained false -c Release --no-restore -o /app/publish /p:UseAppHost=false

FROM base AS final
FROM --platform=$TARGETPLATFORM base AS final
WORKDIR /app
COPY --from=publish /app/publish .

Expand Down
1 change: 1 addition & 0 deletions tuya_mqtt.net/tuya_mqtt.net.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
<DockerfileContext>..</DockerfileContext>
<DockerComposeProjectPath>../docker-compose.dcproj</DockerComposeProjectPath>
<ScopedCssEnabled>true</ScopedCssEnabled>
<AAARuntimeIdentifier>linux-x64;linux-arm64;linux-arm;</AAARuntimeIdentifier>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)'=='Debug'">
Expand Down

0 comments on commit 65bab00

Please sign in to comment.