ci: simplify CI workflows

This commit is contained in:
Konrad Szwarc 2025-06-17 17:34:15 +02:00
parent ff3802b90b
commit 62eba02803
6 changed files with 50 additions and 399 deletions

View file

@ -1,19 +0,0 @@
const fs = require('fs');
module.exports = (version, prNumber) => {
const changelog = fs.readFileSync('CHANGELOG.md', 'utf8');
const changelogLines = changelog.split('\n');
const lastChangeIndex = changelogLines.findIndex((line) => line.startsWith('## ['));
const textToAppend = `
## [${version}] - ${new Date().toISOString().split('T')[0]}
### Dependencies
- chore(deps): update dependencies ([details](https://github.com/KonradSzwarc/devscard/pull/${prNumber}))
`.trim();
changelogLines.splice(lastChangeIndex, 0, textToAppend + '\n');
fs.writeFileSync('CHANGELOG.md', changelogLines.join('\n'));
};

View file

@ -1,16 +0,0 @@
name: Create Issue Branch
on:
issues:
types: [assigned]
pull_request:
types: [closed]
jobs:
create_issue_branch_job:
runs-on: ubuntu-latest
steps:
- name: Create Issue Branch
uses: robvanderleek/create-issue-branch@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View file

@ -1,40 +0,0 @@
name: Modify changelog for dependency updates
on:
pull_request:
types: [labeled]
jobs:
build:
if: github.event.label.name == 'dependencies' && github.repository == 'KonradSzwarc/devscard'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v3
with:
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
- name: Get project information
id: projectinfo
uses: gregoranders/nodejs-project-info@v0.0.20
- name: Get next possible versions
id: semvers
uses: WyriHaximus/github-action-next-semvers@v1
with:
version: ${{ steps.projectinfo.outputs.version }}
- name: Update package.json version
uses: reedyuk/npm-version@1.2.1
with:
version: ${{ steps.semvers.outputs.patch }}
- name: Update CHANGELOG.md
uses: actions/github-script@v6
with:
script: |
const script = require('.github/scripts/update-changelog.js');
const version = '${{ steps.semvers.outputs.patch }}';
const prNumber = '${{ github.event.pull_request.number }}';
script(version, prNumber);
- name: Commit changes
uses: stefanzweifel/git-auto-commit-action@v4

View file

@ -1,136 +0,0 @@
name: Main Branch
on:
push:
branches: [main]
jobs:
prettier:
name: Run Prettier check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
- name: Install dependencies
run: npm ci
- name: Run Prettier
run: npm run prettier:check
typescript:
name: Run TypeScript check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
- name: Install dependencies
run: npm ci
- name: Run TypeScript types check
run: npm run ts:check
astro:
name: Run Astro check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
- name: Install dependencies
run: npm ci
- name: Run Astro check
run: npm run astro:check
deploy:
name: Deploy to Netlify
needs: [prettier, typescript, astro]
if: github.repository == 'KonradSzwarc/devscard'
runs-on: ubuntu-latest
outputs:
deploy-url: ${{ steps.netlify.outputs.deploy-url }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
- name: Install dependencies
run: npm ci
- name: Run Astro build command
run: npm run build
- name: Deploy to Netlify
id: netlify
uses: nwtgck/actions-netlify@v2
with:
publish-dir: dist
production-branch: main
github-token: ${{ secrets.GITHUB_TOKEN }}
production-deploy: true
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
timeout-minutes: 1
percy:
name: Run Percy check
if: github.repository == 'KonradSzwarc/devscard'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
- name: Install dependencies
run: npm ci
- name: Run Astro build command
run: npm run build
env:
PUBLIC_APP_ENV: snapshot
- name: Percy check
env:
PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }}
run: npx percy snapshot dist/
lighthouse:
name: Run Lighthouse check
if: github.repository == 'KonradSzwarc/devscard'
needs: deploy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Lighthouse check
uses: foo-software/lighthouse-check-action@master
with:
urls: ${{ needs.deploy.outputs.deploy-url }}
device: all
release:
name: Create release
if: github.repository == 'KonradSzwarc/devscard'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v3
- name: Get project information
id: projectinfo
uses: gregoranders/nodejs-project-info@v0.0.20
- name: Get changelog entries
id: changelog_reader
uses: mindsers/changelog-reader-action@v2
with:
version: ${{ steps.projectinfo.outputs.version }}
- name: Create a new tag and release
uses: ncipollo/release-action@v1
with:
tag: ${{ steps.changelog_reader.outputs.version }}
name: Release ${{ steps.changelog_reader.outputs.version }}
body: ${{ steps.changelog_reader.outputs.changes }}
allowUpdates: true

View file

@ -1,188 +0,0 @@
name: Pull Request
on:
pull_request:
branches: [main]
types: [opened, edited, synchronize]
jobs:
lint-title:
name: Validate PR title
if: github.repository == 'KonradSzwarc/devscard'
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
requireScope: false
version:
name: Check package.json version
if: github.repository == 'KonradSzwarc/devscard'
runs-on: ubuntu-latest
steps:
- name: Checkout PR branch
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Get project information
id: projectinfo-current
uses: gregoranders/nodejs-project-info@v0.0.20
- name: Checkout main branch
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.base.sha }}
- name: Get project information
id: projectinfo-main
uses: gregoranders/nodejs-project-info@v0.0.20
- name: Get next possible versions
id: semvers
uses: WyriHaximus/github-action-next-semvers@v1
with:
version: ${{ steps.projectinfo-main.outputs.version }}
- name: Assert correct version bump
uses: nick-fields/assert-action@v1
with:
expected: ${{ steps.projectinfo-current.outputs.version }}
actual: 'Possible version bumps: ${{ steps.semvers.outputs.patch }}, ${{ steps.semvers.outputs.minor }}, ${{ steps.semvers.outputs.major }}'
comparison: contains
changelog:
name: Check changelog
if: github.repository == 'KonradSzwarc/devscard'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
- name: Get project information
id: projectinfo
uses: gregoranders/nodejs-project-info@v0.0.20
- name: Enforce changelog update
uses: dangoslen/changelog-enforcer@v3
with:
expectedLatestVersion: ${{ steps.projectinfo.outputs.version }}
- name: Get changelog entries
id: changelog_reader
uses: mindsers/changelog-reader-action@v2
with:
version: ${{ steps.projectinfo.outputs.version }}
- name: Assert correct changelog version
uses: nick-fields/assert-action@v1
with:
expected: ${{ steps.projectinfo.outputs.version }}
actual: ${{ steps.changelog_reader.outputs.version }}
prettier:
name: Run Prettier check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
- name: Install dependencies
run: npm ci
- name: Run Prettier
run: npm run prettier:check
typescript:
name: Run TypeScript check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
- name: Install dependencies
run: npm ci
- name: Run TypeScript types check
run: npm run ts:check
astro:
name: Run Astro check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
- name: Install dependencies
run: npm ci
- name: Run Astro check
run: npm run astro:check
percy:
name: Run Percy check
if: github.repository == 'KonradSzwarc/devscard'
needs: [prettier, typescript, astro, lint-title, version, changelog]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
- name: Install dependencies
run: npm ci
- name: Run Astro build command
run: npm run build
env:
PUBLIC_APP_ENV: snapshot
- name: Percy check
env:
PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }}
run: npx percy snapshot dist/
preview:
name: Create deploy preview
needs: [prettier, typescript, astro, lint-title, version, changelog]
if: github.repository == 'KonradSzwarc/devscard'
runs-on: ubuntu-latest
outputs:
deploy-url: ${{ steps.netlify.outputs.deploy-url }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
- name: Install dependencies
run: npm ci
- name: Run Astro build command
run: npm run build
- name: Deploy to Netlify
id: netlify
uses: nwtgck/actions-netlify@v2
with:
publish-dir: dist
production-branch: main
github-token: ${{ secrets.GITHUB_TOKEN }}
alias: deploy-preview-${{ github.event.number }}
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
timeout-minutes: 1
lighthouse:
name: Run Lighthouse check
if: github.repository == 'KonradSzwarc/devscard'
needs: preview
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Lighthouse check
uses: foo-software/lighthouse-check-action@master
with:
urls: ${{ needs.preview.outputs.deploy-url }}
gitAuthor: ${{ github.actor }}
gitBranch: ${{ github.ref }}
gitHubAccessToken: ${{ secrets.GITHUB_TOKEN }}
device: all
prCommentEnabled: true
prCommentSaveOld: false

50
.github/workflows/run-checks.yml vendored Normal file
View file

@ -0,0 +1,50 @@
name: Run Checks
on:
pull_request:
branches: [main]
push:
branches: [main]
jobs:
prettier:
name: Run Prettier check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
- name: Install dependencies
run: npm ci
- name: Run Prettier
run: npm run prettier:check
typescript:
name: Run TypeScript check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
- name: Install dependencies
run: npm ci
- name: Run TypeScript types check
run: npm run ts:check
astro:
name: Run Astro check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: npm
- name: Install dependencies
run: npm ci
- name: Run Astro check
run: npm run astro:check