HTML & CSS & JavaScript sample #325
This file contains 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 Samples | |
on: | |
pull_request: | |
paths: | |
- 'samples/**' | |
jobs: | |
check_samples: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
pull-requests: write | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
# Fetch two to see changes in current commit | |
fetch-depth: 2 | |
- name: Run Checks | |
id: checks | |
run: | | |
./scripts/check-sample-files.sh > checklist.txt | |
./scripts/check-modified-samples.sh > modified.txt | |
echo "@@ MODIFIED @@" | |
cat modified.txt | |
# TODO: Uncomment the following lines to validate the Compose files | |
# once we figure out how to prevent it from erroring on warnings. | |
# - name: Validate Compose Files with Defang CLI | |
# run: | | |
# . <(curl -Ls https://s.defang.io/install) | |
# cat modified.txt | xargs -n1 defang compose config -C > /dev/null | |
- name: Add checklist to PR description | |
uses: actions/github-script@v5 | |
with: | |
script: | | |
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 error = false; | |
if(!checklist) { | |
checklist = "✅ All good!" | |
} | |
else { | |
error = true; | |
} | |
// 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); | |
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 | |
}); | |
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 | |
env: | |
PUSH_TOKEN: ${{ secrets.TEMPLATES_MANAGER_TOKEN }} | |
with: | |
github-token: ${{ secrets.TEMPLATES_MANAGER_TOKEN }} | |
script: | | |
const script = require('./scripts/template-manager.js') | |
const output = script({github, context, core}); | |
console.log("@@ output", output) |