diff --git a/.github/workflows/check-sample.yml b/.github/workflows/check-sample.yml index cd90562f..736c492f 100644 --- a/.github/workflows/check-sample.yml +++ b/.github/workflows/check-sample.yml @@ -45,48 +45,59 @@ jobs: const fs = require('fs'); const pr_number = context.issue.number; const marker = '## Samples Checklist'; - - // Read the checklist from the file - let checklist = fs.readFileSync('checklist.txt', 'utf8').trim(); + + let checklist; let error = false; - if(!checklist) { - checklist = "✅ All good!" - } - else { - error = true; + try { + // Read the checklist from the file + checklist = fs.readFileSync('checklist.txt', 'utf8'); + checklist = checklist.trim(); + if(!checklist) { + checklist = "✅ All good!" + } + else { + error = true; + } + } catch (readFileError) { + throw new Error("Could not read samples checklist from file. Please fix the issues and try again.") } - // Get the current PR - const { data: pullRequest } = await github.rest.pulls.get({ - owner: context.repo.owner, - repo: context.repo.repo, - pull_number: pr_number - }); + try { + // Get the current PR + const { data: pullRequest } = await github.rest.pulls.get({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: pr_number + }); - let newBody; - const body = pullRequest.body || ""; - const markerIndex = body.indexOf(marker); + let newBody; + const body = pullRequest.body || ""; + const markerIndex = body.indexOf(marker); - if (markerIndex !== -1) { - // Replace the content below the marker - newBody = body.substring(0, markerIndex + marker.length) + "\n" + checklist; - } else { - // Append the checklist if the marker doesn't exist - newBody = body + "\n" + marker + "\n" + checklist; - } + if (markerIndex !== -1) { + // Replace the content below the marker + newBody = body.substring(0, markerIndex + marker.length) + "\n" + checklist; + } else { + // Append the checklist if the marker doesn't exist + newBody = body + "\n" + marker + "\n" + checklist; + } - // Update the PR description - await github.rest.pulls.update({ - owner: context.repo.owner, - repo: context.repo.repo, - pull_number: pr_number, - body: newBody - }); + // Update the PR description + await github.rest.pulls.update({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: pr_number, + body: newBody + }); + } catch (updatePrError) { + throw new Error("Could not update PR description based on samples checklist. Please fix the issues and try again.") + } - if(error) { + if (error) { throw new Error("Incomplete samples checklist. Please fix the issues and try again."); } + - name: Create / Update Template Repo uses: actions/github-script@v7 diff --git a/.github/workflows/publish-sample-template.yml b/.github/workflows/publish-sample-template.yml index 742ec8b8..c572ef2d 100644 --- a/.github/workflows/publish-sample-template.yml +++ b/.github/workflows/publish-sample-template.yml @@ -6,7 +6,7 @@ on: - main jobs: - check_samples: + publish_samples: runs-on: ubuntu-latest permissions: contents: write diff --git a/scripts/check-sample-files.sh b/scripts/check-sample-files.sh index a47533d6..ca5394a5 100755 --- a/scripts/check-sample-files.sh +++ b/scripts/check-sample-files.sh @@ -18,8 +18,9 @@ for dir in ./samples/*/; do # if there is a compose.yaml file, check if it is valid ( cd $dir - if ! defang compose config > /dev/null 2>/dev/null; then - echo " - [ ] ${dir}compose.yaml contains errors" + output=$(defang compose config 2>&1) + if [[ $? -ne 0 ]]; then + echo " - [ ] ${dir}compose.yaml is not valid according to \`defang compose config\`: $output" fi ) fi