From 63b3a8371dfa0a66c3879475197597f137075db7 Mon Sep 17 00:00:00 2001 From: SebClem Date: Tue, 13 Aug 2024 13:47:22 +0200 Subject: [PATCH] Docker build --- .github/workflows/build_addon.yml | 160 +++++++++--------- nextcloud_backup/Dockerfile | 3 +- .../rootfs/etc/fix-attrs.d/10-run | 1 - 3 files changed, 82 insertions(+), 82 deletions(-) delete mode 100755 nextcloud_backup/rootfs/etc/fix-attrs.d/10-run diff --git a/.github/workflows/build_addon.yml b/.github/workflows/build_addon.yml index 4863159..d8cb4d2 100644 --- a/.github/workflows/build_addon.yml +++ b/.github/workflows/build_addon.yml @@ -79,92 +79,92 @@ jobs: name: back_dist path: nextcloud_backup/backend/dist/ - # build-dockers: - # runs-on: ubuntu-latest - # strategy: - # fail-fast: false - # matrix: - # arch: [ aarch64, amd64, armv7, i386, armhf ] - # include: - # - arch: aarch64 - # arch_value: linux/arm64/v8 - # - arch: amd64 - # arch_value: linux/amd64 - # - arch: armv7 - # arch_value: linux/arm/v7 - # - arch: i386 - # arch_value: linux/386 - # - arch: armhf - # arch_value: linux/arm/v6 - # steps: + build-dockers: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + arch: [ aarch64, amd64, armv7, i386, armhf ] + include: + - arch: aarch64 + arch_value: linux/arm64/v8 + - arch: amd64 + arch_value: linux/amd64 + - arch: armv7 + arch_value: linux/arm/v7 + - arch: i386 + arch_value: linux/386 + - arch: armhf + arch_value: linux/arm/v6 + steps: - # - uses: actions/checkout@v3 + - uses: actions/checkout@v3 - # - name: Set up QEMU - # uses: docker/setup-qemu-action@v2 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 - # - name: Set up Docker Buildx ${{matrix.arch}} - # uses: docker/setup-buildx-action@v2 + - name: Set up Docker Buildx ${{matrix.arch}} + uses: docker/setup-buildx-action@v2 - # - name: Set Version Prod ${{matrix.arch}} - # if: github.event_name != 'workflow_dispatch' && github.event_name != 'push' - # run: | - # version=${GITHUB_REF/refs\/tags\//} - # if [ -n "$version" ];then - # tmp=$(mktemp) - # jq --arg version "$version" '.version=$version' ${{env.TARGET}}/config.json > "$tmp" && mv "$tmp" ${{env.TARGET}}/config.json - # fi - # echo "version_type=prod" >> $GITHUB_ENV - # - name: Set Version Test ${{matrix.arch}} - # if: github.event_name == 'workflow_dispatch' || github.event_name == 'push' - # run: | - # version=dev_${GITHUB_RUN_ID} - # if [ -n "$version" ];then - # tmp=$(mktemp) - # jq --arg version "$version" '.version=$version' ${{env.TARGET}}/config.json > "$tmp" && mv "$tmp" ${{env.TARGET}}/config.json - # fi - # echo "version_type=dev" >> $GITHUB_ENV + - name: Set Version Prod ${{matrix.arch}} + if: github.event_name != 'workflow_dispatch' && github.event_name != 'push' + run: | + version=${GITHUB_REF/refs\/tags\//} + if [ -n "$version" ];then + tmp=$(mktemp) + jq --arg version "$version" '.version=$version' ${{env.TARGET}}/config.json > "$tmp" && mv "$tmp" ${{env.TARGET}}/config.json + fi + echo "version_type=prod" >> $GITHUB_ENV + - name: Set Version Test ${{matrix.arch}} + if: github.event_name == 'workflow_dispatch' || github.event_name == 'push' + run: | + version=dev_${GITHUB_RUN_ID} + if [ -n "$version" ];then + tmp=$(mktemp) + jq --arg version "$version" '.version=$version' ${{env.TARGET}}/config.json > "$tmp" && mv "$tmp" ${{env.TARGET}}/config.json + fi + echo "version_type=dev" >> $GITHUB_ENV - # - name: Get build option ${{matrix.arch}} - # run: | - # echo "NAME=$(jq --raw-output '.name // empty' "${{env.TARGET}}/config.json" | sed "s/'//g")" >> $GITHUB_ENV - # echo "DESCRIPTION=$(jq --raw-output '.description // empty' "${{env.TARGET}}/config.json" | sed "s/'//g")" >> $GITHUB_ENV - # echo "URL=$(jq --raw-output '.url // empty' "${{env.TARGET}}/config.json")" >> $GITHUB_ENV - # echo "VERSION=$(jq --raw-output '.version' "${{env.TARGET}}/config.json")" >> $GITHUB_ENV - # echo "BUILD_FROM=ghcr.io/hassio-addons/base/${{matrix.arch}}:$(cat nextcloud_backup/.base_version)" >> $GITHUB_ENV + - name: Get build option ${{matrix.arch}} + run: | + echo "NAME=$(jq --raw-output '.name // empty' "${{env.TARGET}}/config.json" | sed "s/'//g")" >> $GITHUB_ENV + echo "DESCRIPTION=$(jq --raw-output '.description // empty' "${{env.TARGET}}/config.json" | sed "s/'//g")" >> $GITHUB_ENV + echo "URL=$(jq --raw-output '.url // empty' "${{env.TARGET}}/config.json")" >> $GITHUB_ENV + echo "VERSION=$(jq --raw-output '.version' "${{env.TARGET}}/config.json")" >> $GITHUB_ENV + echo "BUILD_FROM=ghcr.io/home-assistant/${{matrix.arch}}-base:$(cat nextcloud_backup/.base_version)" >> $GITHUB_ENV - # - name: Set Tags ${{matrix.arch}} - # run: | - # if [ "${{env.version_type}}" != "dev" ]; then - # echo "TAGS=${{env.REPOSITORY}}/${{env.IMAGE}}/${{matrix.arch}}:latest, ${{env.REPOSITORY}}/${{env.IMAGE}}/${{matrix.arch}}:$(jq --raw-output '.version' "${{env.TARGET}}/config.json")" >> $GITHUB_ENV - # else - # echo "TAGS=${{env.REPOSITORY}}/${{env.IMAGE}}/${{matrix.arch}}:dev, ${{env.REPOSITORY}}/${{env.IMAGE}}/${{matrix.arch}}:$(jq --raw-output '.version' "${{env.TARGET}}/config.json")" >> $GITHUB_ENV - # fi + - name: Set Tags ${{matrix.arch}} + run: | + if [ "${{env.version_type}}" != "dev" ]; then + echo "TAGS=${{env.REPOSITORY}}/${{env.IMAGE}}/${{matrix.arch}}:latest, ${{env.REPOSITORY}}/${{env.IMAGE}}/${{matrix.arch}}:$(jq --raw-output '.version' "${{env.TARGET}}/config.json")" >> $GITHUB_ENV + else + echo "TAGS=${{env.REPOSITORY}}/${{env.IMAGE}}/${{matrix.arch}}:dev, ${{env.REPOSITORY}}/${{env.IMAGE}}/${{matrix.arch}}:$(jq --raw-output '.version' "${{env.TARGET}}/config.json")" >> $GITHUB_ENV + fi - # - name: Debug Env - # run: | - # echo ${{env.VERSION}} - # echo ${{env.TAGS}} + - name: Debug Env + run: | + echo ${{env.VERSION}} + echo ${{env.TAGS}} - # - name: Login to ghcr.io - # uses: docker/login-action@v2 - # with: - # registry: ghcr.io - # username: ${{ github.actor }} - # password: ${{ secrets.GITHUB_TOKEN }} + - name: Login to ghcr.io + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - # - name: Build and push ${{matrix.arch}} - # uses: docker/build-push-action@v3 - # with: - # push: ${{ github.event_name != 'pull_request' }} - # tags: ${{env.TAGS}} - # labels: io.hass.name=${{env.NAME}}, io.hass.description=${{env.DESCRIPTION}}, io.hass.url=${{env.URL}}, io.hass.arch=${{matrix.arch}}, io.hass.version=${{env.VERSION}}, io.hass.type=addon - # build-args: | - # BUILD_FROM=${{env.BUILD_FROM}} - # BUILD_VERSION=${{env.VERSION}} - # IMAGE_SOURCE=${{env.IMAGE_SOURCE}} - # file: ./${{env.TARGET}}/Dockerfile - # cache-from: type=registry,ref=${{env.REPOSITORY}}/${{env.IMAGE}}/${{matrix.arch}}:latest - # cache-to: type=inline - # context: ./${{env.TARGET}}/ - # platforms: ${{ matrix.arch_value }} + - name: Build and push ${{matrix.arch}} + uses: docker/build-push-action@v3 + with: + push: ${{ github.event_name != 'pull_request' }} + tags: ${{env.TAGS}} + labels: io.hass.name=${{env.NAME}}, io.hass.description=${{env.DESCRIPTION}}, io.hass.url=${{env.URL}}, io.hass.arch=${{matrix.arch}}, io.hass.version=${{env.VERSION}}, io.hass.type=addon + build-args: | + BUILD_FROM=${{env.BUILD_FROM}} + BUILD_VERSION=${{env.VERSION}} + IMAGE_SOURCE=${{env.IMAGE_SOURCE}} + file: ./${{env.TARGET}}/Dockerfile + cache-from: type=registry,ref=${{env.REPOSITORY}}/${{env.IMAGE}}/${{matrix.arch}}:latest + cache-to: type=inline + context: ./${{env.TARGET}}/ + platforms: ${{ matrix.arch_value }} diff --git a/nextcloud_backup/Dockerfile b/nextcloud_backup/Dockerfile index 776c0c8..fd6c11a 100644 --- a/nextcloud_backup/Dockerfile +++ b/nextcloud_backup/Dockerfile @@ -22,7 +22,8 @@ COPY backend/ . RUN pnpm build -FROM ghcr.io/hassio-addons/base/amd64:16.2.1 +ARG BUILD_FROM=ghcr.io/home-assistant/amd64-base:3.18 +FROM $BUILD_FROM # Copy root filesystem COPY rootfs/etc /etc/ diff --git a/nextcloud_backup/rootfs/etc/fix-attrs.d/10-run b/nextcloud_backup/rootfs/etc/fix-attrs.d/10-run deleted file mode 100755 index b55d5e7..0000000 --- a/nextcloud_backup/rootfs/etc/fix-attrs.d/10-run +++ /dev/null @@ -1 +0,0 @@ -/usr/bin/nextcloud_backup.sh false root 0755 0755 \ No newline at end of file