From 7dc331ec015c7e066265e7eb02879e871e77647e Mon Sep 17 00:00:00 2001 From: duhow Date: Sun, 8 Sep 2024 16:50:13 +0200 Subject: [PATCH] WIP: upload release --- .github/workflows/build-packages.yaml | 10 ++- .github/workflows/build-release.yaml | 107 ++++++++++++++++++++++++++ 2 files changed, 113 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/build-release.yaml diff --git a/.github/workflows/build-packages.yaml b/.github/workflows/build-packages.yaml index df831ee..da70d30 100644 --- a/.github/workflows/build-packages.yaml +++ b/.github/workflows/build-packages.yaml @@ -22,17 +22,19 @@ jobs: MODEL: ${{ github.event.inputs.model || inputs.model || 'LX06' }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build image - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v6 with: context: packages tags: xiaoai-patch load: true - name: Build packages - uses: ./ + uses: docker://xiaoai-patch - name: Upload packages - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: build-${{ env.MODEL }} path: build-packages/targets/bin-*.tar.gz + retention-days: 7 + compression-level: 0 diff --git a/.github/workflows/build-release.yaml b/.github/workflows/build-release.yaml new file mode 100644 index 0000000..1fb1c5a --- /dev/null +++ b/.github/workflows/build-release.yaml @@ -0,0 +1,107 @@ +name: Build Release + +permissions: + contents: read + id-token: write + attestations: write + +on: + push: + tags: + - '*.*.*' + branches: + +jobs: + packages: + name: Packages + if: false + strategy: + fail-fast: true + matrix: + model: [lx01, lx06, l09a, l09b] + uses: ./.github/workflows/build-packages.yaml + with: + model: ${{ matrix.model }} + + image: + name: Image + #needs: [packages] + runs-on: ubuntu-latest + strategy: + fail-fast: true + matrix: + model: [lx01, lx06, l09a, l09b] + env: + MODEL: ${{ matrix.model }} + steps: + - uses: actions/checkout@v4 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Pull base image + id: base + env: + IMAGE: ghcr.io/${{ github.repository }}/${{ matrix.model }}:base + run: | + sudo make pull MODEL=$MODEL + + VERSION=`docker inspect ${IMAGE} | jq -r '.[0].Config.Labels["org.opencontainers.image.version"]'` + echo "version=${VERSION}" >> ${GITHUB_OUTPUT} + + - name: Pull build packages + uses: actions/download-artifact@v4 + with: + name: build-${{ matrix.model }} + path: build-packages/targets/ + + - name: Extract build packages + env: + SOURCE_DIR: build-packages/targets + TARGET: build-packages/s2t/armv7 + run: | + mkdir -p ${TARGET} + sudo tar xzvf ${SOURCE_DIR}/bin-*.tar.gz -C ${TARGET} + + - name: Build image + run: sudo make patch build MODEL=${MODEL} + + - name: Prepare image + id: image + env: + FILE: release/${{ env.MODEL }}/latest + BASE_VERSION: ${{ steps.base.outputs.version }} + run: | + HASH=`md5sum ${FILE} | awk '{print $1}'` + echo "hash=${HASH}" | tee -a ${GITHUB_OUTPUT} + NAME="mico_firmware_${HASH: -5}_$(date +"%y%m%d")_${MODEL}.img" + echo "name=${NAME}" | tee -a ${GITHUB_OUTPUT} + + cp -vf ${FILE} ${NAME} + + SIZE=`stat -c%s ${NAME}` + echo "size=${SIZE}" | tee -a ${GITHUB_OUTPUT} + + jq -nc \ + --arg name "$NAME" \ + --argjson size "$SIZE" \ + --arg hash "$HASH" \ + --arg version "$BASE_VERSION" \ + '{"name": $name, "size": $size, "hash": $hash, "base_version": $version}' >> ${GITHUB_STEP_SUMMARY} + + - name: Upload image + uses: softprops/action-gh-release@v2 + with: + files: ${{ steps.image.outputs.name }} + draft: true + + - name: Attest Build Provenance + uses: actions/attest-build-provenance@v1 + with: + subject-path: ${{ steps.image.outputs.name }} + show-summary: false +