Skip to content

Commit

Permalink
adapt workflows and top-level Makefile to deal with newer docker image
Browse files Browse the repository at this point in the history
files which do not always contain a layer.tar file but have to extract
the top level layer file by parsing the manifest.json file. This should
fix the OCI/Docker builds with newer docker v26 versions.
  • Loading branch information
jens-maus committed Apr 30, 2024
1 parent 8c323d6 commit 25f570a
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 31 deletions.
19 changes: 14 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -273,12 +273,17 @@ jobs:

- name: Extract OCI artifacts
run: |
rm -rf oci_build
mkdir -p oci_build
cd oci_build
for f in ../*-oci_*.tgz; do
tar --wildcards --strip-components 1 -xf $f "*/layer.tar"
mv -f layer.tar $(basename $f .tgz).tar
rm -f $f
cd oci_build || exit 1
for f in ../RaspberryMatic-${{ env.BUILD_VERSION }}-oci_*.tgz; do
echo "extracting ${f}..."
DIR=$(basename "${f}" .tgz)
mkdir -p "${DIR}"
tar -C "${DIR}" -xf "${f}"
LAYER=$(jq -r '.[0].Layers[0]' "${DIR}/manifest.json")
mv -f "${DIR}/${LAYER}" "./${DIR}.tar"
rm -rf "${DIR}" "${f}"*
done
- name: Set up Docker Buildx
Expand Down Expand Up @@ -424,3 +429,7 @@ jobs:
docker volume rm ccu_data
docker image ls -a
docker image rm ${{ env.CCU_OCI_REPO }}:${{ env.CCU_OCI_TAG }}
- name: Cleanup oci_build dir
run: |
rm -rf oci_build
21 changes: 15 additions & 6 deletions .github/workflows/oci-repush.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,19 @@ jobs:
fileName: "RaspberryMatic-*-oci_*.tgz"

# extract all OCI assets
- name: Extract OCI assets
- name: Extract OCI artifacts
run: |
rm -rf oci_build
mkdir -p oci_build
cd oci_build
for f in ../*-oci_*.tgz; do
tar --wildcards --strip-components 1 -xf $f "*/layer.tar"
mv -f layer.tar $(basename $f .tgz).tar
rm -f $f
cd oci_build || exit 1
for f in ../RaspberryMatic-${{ github.event.inputs.release_tag }}-oci_*.tgz; do
echo "extracting ${f}..."
DIR=$(basename "${f}" .tgz)
mkdir -p "${DIR}"
tar -C "${DIR}" -xf "${f}"
LAYER=$(jq -r '.[0].Layers[0]' "${DIR}/manifest.json")
mv -f "${DIR}/${LAYER}" "./${DIR}.tar"
rm -rf "${DIR}" "${f}"*
done
- name: Build OCI tags
Expand Down Expand Up @@ -114,3 +119,7 @@ jobs:
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}

- name: Cleanup oci_build dir
run: |
rm -rf oci_build
19 changes: 14 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -374,12 +374,17 @@ jobs:

- name: Extract OCI artifacts
run: |
rm -rf oci_build
mkdir -p oci_build
cd oci_build
for f in ../*-oci_*.tgz; do
tar --wildcards --strip-components 1 -xf $f "*/layer.tar"
mv -f layer.tar $(basename $f .tgz).tar
rm -f $f
cd oci_build || exit 1
for f in ../RaspberryMatic-${{ needs.release_draft.outputs.version }}-oci_*.tgz; do
echo "extracting ${f}..."
DIR=$(basename "${f}" .tgz)
mkdir -p "${DIR}"
tar -C "${DIR}" -xf "${f}"
LAYER=$(jq -r '.[0].Layers[0]' "${DIR}/manifest.json")
mv -f "${DIR}/${LAYER}" "./${DIR}.tar"
rm -rf "${DIR}" "${f}"*
done
- name: Build OCI tags
Expand Down Expand Up @@ -448,6 +453,10 @@ jobs:
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}

- name: Cleanup oci_build dir
run: |
rm -rf oci_build
##########################################
# Publish new version to public
publish-build:
Expand Down
19 changes: 14 additions & 5 deletions .github/workflows/snapshot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -325,12 +325,17 @@ jobs:

- name: Extract OCI artifacts
run: |
rm -rf oci_build
mkdir -p oci_build
cd oci_build
for f in ../*-oci_*.tgz; do
tar --wildcards --strip-components 1 -xf $f "*/layer.tar"
mv -f layer.tar $(basename $f .tgz).tar
rm -f $f
cd oci_build || exit 1
for f in ../RaspberryMatic-${{ env.BUILD_VERSION }}-oci_*.tgz; do
echo "extracting ${f}..."
DIR=$(basename "${f}" .tgz)
mkdir -p "${DIR}"
tar -C "${DIR}" -xf "${f}"
LAYER=$(jq -r '.[0].Layers[0]' "${DIR}/manifest.json")
mv -f "${DIR}/${LAYER}" "./${DIR}.tar"
rm -rf "${DIR}" "${f}"*
done
- name: Build OCI tags
Expand Down Expand Up @@ -399,6 +404,10 @@ jobs:
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}

- name: Cleanup oci_build dir
run: |
rm -rf oci_build
helm:
permissions:
contents: write # stefanprodan/helm-gh-pages
Expand Down
22 changes: 12 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -64,16 +64,18 @@ else
mkdir -p build-$(PRODUCT)/images
for f in `cat release/updatepkg/$(PRODUCT)/files-images.txt`; do echo DUMMY >build-$(PRODUCT)/images/$${f}; done
# create fake OCI/Docker image
mkdir -p /tmp/oci
mkdir sbin
echo -e '#!/bin/sh\nwhile true; do echo CONTINUE; sleep 5; done\nexit 0' >sbin/init
chmod a+rx sbin/init
mkdir -p var/status
touch var/status/startupFinished
tar -cf /tmp/oci/layer.tar LICENSE sbin/init var/status/startupFinished
tar -C /tmp -cvf RaspberryMatic-$(PRODUCT_VERSION)-$(BOARD).tar oci
mv RaspberryMatic-$(PRODUCT_VERSION)-$(BOARD).tar build-$(PRODUCT)/images/
rm -rf /tmp/oci
$(eval TMPDIR := $(shell mktemp -d))
mkdir -p $(TMPDIR)/oci $(TMPDIR)/sbin
echo -e '#!/bin/sh\nwhile true; do echo CONTINUE; sleep 5; done\nexit 0' >$(TMPDIR)/sbin/init
chmod a+rx $(TMPDIR)/sbin/init
mkdir -p $(TMPDIR)/var/status
touch $(TMPDIR)/var/status/startupFinished
echo DUMMY >$(TMPDIR)/LICENSE
tar -C $(TMPDIR) -cvf $(TMPDIR)/oci/layer.tar LICENSE sbin/init var/status/startupFinished
echo '[{"Layers":["oci/layer.tar"]}]' >$(TMPDIR)/manifest.json
tar -C $(TMPDIR) -cvf $(TMPDIR)/RaspberryMatic-$(PRODUCT_VERSION)-$(BOARD).tar oci manifest.json
mv $(TMPDIR)/RaspberryMatic-$(PRODUCT_VERSION)-$(BOARD).tar build-$(PRODUCT)/images/
rm -rf $(TMPDIR)
# create fake sdcard.img and ova
echo DUMMY >build-$(PRODUCT)/images/sdcard.img
echo DUMMY >build-$(PRODUCT)/images/RaspberryMatic.ova
Expand Down

0 comments on commit 25f570a

Please sign in to comment.