1+ name : Sync and update Compliance Checks
2+
3+ on :
4+ push :
5+ branches : [ main ]
6+ pull_request :
7+ branches : [ main ]
8+ # schedule:
9+ # - cron: "0 0 * * *" # Runs daily at midnight UTC
10+ # workflow_dispatch: # Allows manual triggering
11+
12+ permissions :
13+ # We will create a pull request, so we need write permissions
14+ pull-requests : write
15+ # We will be committing to the repository, so we need write permissions
16+ contents : write
17+
18+
19+ jobs :
20+ sync-and-update :
21+ runs-on : ubuntu-latest
22+
23+ services :
24+ postgres :
25+ image : postgres:17.2
26+ env :
27+ POSTGRES_DB : dashboard
28+ POSTGRES_USER : openjs
29+ POSTGRES_PASSWORD : password
30+ ports :
31+ - 5432:5432
32+ options : >-
33+ --health-cmd="pg_isready -U openjs"
34+ --health-interval=10s
35+ --health-timeout=5s
36+ --health-retries=5
37+
38+ steps :
39+ # Checkout the current repository
40+ - name : Checkout Repository
41+ uses : actions/checkout@v4
42+
43+ # Create or switch to the chore/update-content branch
44+ - name : Create or Checkout Branch
45+ run : |
46+ git fetch origin chore/update-content || true
47+ git checkout chore/update-content || git checkout -b chore/update-content
48+
49+ # Clone the public repository and set it up
50+ - name : Clone OpenJS Foundation Dashboard
51+ run : |
52+ git clone https://github.com/secure-dashboards/openjs-foundation-dashboard.git temp-openjs-dashboard
53+ cd temp-openjs-dashboard
54+ npm install
55+ npm run db:migrate
56+ psql -U openjs -d dashboard -c "\copy (SELECT json_agg(t) FROM compliance_checks t) TO '../data/checks.json'"
57+ cd ..
58+ rm -rf temp-openjs-dashboard
59+ env :
60+ PGHOST : localhost
61+ PGUSER : openjs
62+ PGPASSWORD : password
63+ PGDATABASE : dashboard
64+
65+ - name : Debug Git Changes (Before Commit Updated Checks)
66+ run : |
67+ git status
68+ git diff
69+
70+ # Commit the updated checks.json
71+ - name : Commit Updated Checks
72+ run : |
73+ git config user.name "GitHub Actions"
74+ git config user.email "[email protected] " 75+ git add -A
76+ git diff --cached --quiet || git commit -m "chore: sync with OpenJS Foundation Dashboard"
77+
78+ # Install dependencies for the current repository and generate site
79+ - name : Install Dependencies and Generate Site
80+ run : |
81+ npm install
82+ npm run populate-details
83+ npm run populate-implementations
84+
85+ - name : Debug Git Changes (Before Commit Updated Checks)
86+ run : |
87+ git status
88+ git diff
89+
90+ # Commit the generated site
91+ - name : Commit and Push Changes
92+ run : |
93+ git config user.name "GitHub Actions"
94+ git config user.email "[email protected] " 95+ git add -A
96+ git diff --cached --quiet || git commit -m "chore: auto-update details and implementations"
97+ git push origin chore/update-content
98+ env :
99+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
100+
101+ - name : Create Pull Request
102+ run : |
103+ gh auth login --with-token <<< "${{ secrets.GITHUB_TOKEN }}"
104+ gh pr create --base main --head chore/update-content --title "Auto update content" --body "This PR updates the content."
105+ env :
106+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments