ci: simplify CI workflows
This commit is contained in:
parent
ff3802b90b
commit
62eba02803
6 changed files with 50 additions and 399 deletions
19
.github/scripts/update-changelog.js
vendored
19
.github/scripts/update-changelog.js
vendored
|
|
@ -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'));
|
||||
};
|
||||
16
.github/workflows/create-issue-branch.yml
vendored
16
.github/workflows/create-issue-branch.yml
vendored
|
|
@ -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 }}
|
||||
|
|
@ -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
|
||||
136
.github/workflows/main-branch.yml
vendored
136
.github/workflows/main-branch.yml
vendored
|
|
@ -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
|
||||
188
.github/workflows/pull-request.yml
vendored
188
.github/workflows/pull-request.yml
vendored
|
|
@ -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
50
.github/workflows/run-checks.yml
vendored
Normal 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
|
||||
Loading…
Reference in a new issue