Check for new camera-streamer-raspi package #9004
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: "Check for new camera-streamer-raspi package" | |
| on: | |
| schedule: | |
| - cron: "23 * * * *" | |
| workflow_dispatch: | |
| jobs: | |
| check-package: | |
| name: "Check packages" | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: "🔎 Find latest package" | |
| uses: actions/github-script@v6 | |
| with: | |
| script: | | |
| let release = null; | |
| console.log("Fetching latest release"); | |
| const query = `query { | |
| repository(owner:"OctoPrint", name:"camera-streamer") { | |
| latestRelease { | |
| tagName | |
| releaseAssets(last:10) { | |
| nodes { | |
| name | |
| downloadUrl | |
| } | |
| } | |
| } | |
| } | |
| }`; | |
| const result = await github.graphql(query); | |
| console.log({result}); | |
| release = result.repository.latestRelease; | |
| if (!release || !release.tagName || !release.releaseAssets || !release.releaseAssets.nodes) core.setFailed("Could not find camera-streamer release"); | |
| const tag = release.tagName; | |
| let packageNames = []; | |
| let packageUrls = []; | |
| let found_armhf = false; | |
| let found_arm64 = false; | |
| for (const asset of release.releaseAssets.nodes.reverse()) { | |
| if (asset.name.startsWith("camera-streamer-raspi_") && asset.name.endsWith("_armhf.deb")) { | |
| packageNames.push(asset.name); | |
| packageUrls.push(asset.downloadUrl); | |
| found_armhf = true; | |
| } | |
| if (asset.name.startsWith("camera-streamer-raspi_") && asset.name.endsWith("_arm64.deb")) { | |
| packageNames.push(asset.name); | |
| packageUrls.push(asset.downloadUrl); | |
| found_arm64 = true; | |
| } | |
| } | |
| if (!found_armhf) core.setFailed("Could not find camera-streamer-raspi armhf package"); | |
| if (!found_arm64) core.setFailed("Could not find camera-streamer-raspi arm64 package"); | |
| console.log("Package names:"); | |
| for (const name of packageNames) { | |
| console.log(` ${name}`) | |
| } | |
| console.log("Package URLs:"); | |
| for (const url of packageUrls) { | |
| console.log(` ${url}`) | |
| } | |
| core.exportVariable("PACKAGE_NAMES", packageNames.join(" ")); | |
| core.exportVariable("PACKAGE_URLS", packageUrls.join(" ")); | |
| - name: ⬇ Checkout | |
| uses: actions/checkout@v3 | |
| - name: 🤔 Check if package is already in repo | |
| id: check-package-exists | |
| run: | | |
| NAMES=($PACKAGE_NAMES) | |
| URLS=($PACKAGE_URLS) | |
| NEWURLS=() | |
| for i in "${!NAMES[@]}"; do | |
| name=${NAMES[i]} | |
| dist=$(echo $name | rev | cut -d"." -f2 | rev | cut -d"_" -f1 | cut -d"-" -f1) | |
| if [ -f "pool/$dist/rpi/camera-streamer-raspi/${NAMES[i]}" ]; then | |
| echo "Package ${NAMES[i]} already in repo" | |
| else | |
| echo "Package ${NAMES[i]} not in repo" | |
| NEWURLS+=(${URLS[i]}) | |
| fi | |
| done | |
| echo "geturls=${NEWURLS[*]}" >> "$GITHUB_OUTPUT" | |
| - name: Trigger package addition if not yet there | |
| if: steps.check-package-exists.outputs.geturls != '' | |
| uses: benc-uk/workflow-dispatch@v1 | |
| with: | |
| workflow: add-package.yml | |
| inputs: '{"urls": "${{ steps.check-package-exists.outputs.geturls }}", "component": "rpi"}' |