name: test uploads on: workflow_dispatch: jobs: matrix: runs-on: self-hosted outputs: distros: ${{ steps.set.outputs.distros }} steps: - id: set run: echo 'distros=["ubuntu2604","arch","cachyos"]' >> "$GITHUB_OUTPUT" build: needs: matrix runs-on: self-hosted timeout-minutes: 10 strategy: fail-fast: false max-parallel: 1 matrix: distro: ${{ fromJson(needs.matrix.outputs.distros) }} steps: - name: Reset workspace run: sudo rm -rf ./* - name: Create fake image run: | mkdir -p image/output dd if=/dev/urandom of=image/output/ps5-${{ matrix.distro }}.img bs=1M count=8 - name: Compress image run: | xz -T0 -1 -c image/output/ps5-${{ matrix.distro }}.img \ > image/output/ps5-${{ matrix.distro }}.img.xz - name: Upload to R2 env: RCLONE_CONFIG_R2_TYPE: s3 RCLONE_CONFIG_R2_PROVIDER: Cloudflare RCLONE_CONFIG_R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }} RCLONE_CONFIG_R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }} RCLONE_CONFIG_R2_ENDPOINT: ${{ secrets.R2_ENDPOINT }} RCLONE_CONFIG_R2_NO_CHECK_BUCKET: true run: | rclone copyto image/output/ps5-${{ matrix.distro }}.img.xz \ "r2:${{ secrets.R2_BUCKET }}/test-${{ matrix.distro }}.img.xz" -v - name: Save build metadata run: | mkdir -p meta sha256sum image/output/ps5-${{ matrix.distro }}.img.xz \ | sed 's|image/output/||' > meta/${{ matrix.distro }}.sha256 echo "6.x.y-test" > meta/kver echo "abc1234" > meta/psha date -u +%Y%m%d-%H%M%S > meta/ts - name: Upload build metadata uses: actions/upload-artifact@v6 with: name: meta-${{ matrix.distro }} path: meta/ retention-days: 1 - name: Cleanup if: always() run: rm -rf image/output meta release: needs: build runs-on: self-hosted steps: - name: Download build metadata uses: actions/download-artifact@v6 with: pattern: meta-* path: meta merge-multiple: true - name: Prepare release body id: body run: | KVER=$(cat meta/kver) PSHA=$(cat meta/psha) TS=$(cat meta/ts) SUMS=$(cat meta/*.sha256) { echo 'text<> "$GITHUB_OUTPUT" - name: Verify release body run: | echo "=== Release body ===" cat <<'EOF' ${{ steps.body.outputs.text }} EOF echo "" echo "=== All checksums ===" cat meta/*.sha256 cleanup-remote: needs: release runs-on: self-hosted if: always() steps: - name: Clean up R2 test files env: RCLONE_CONFIG_R2_TYPE: s3 RCLONE_CONFIG_R2_PROVIDER: Cloudflare RCLONE_CONFIG_R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }} RCLONE_CONFIG_R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }} RCLONE_CONFIG_R2_ENDPOINT: ${{ secrets.R2_ENDPOINT }} RCLONE_CONFIG_R2_NO_CHECK_BUCKET: true run: | for d in ubuntu2604 arch cachyos; do rclone delete "r2:${{ secrets.R2_BUCKET }}/test-${d}.img.xz" -v || true done