Skip to content

Commit

Permalink
Ensure correct build output and upload artifacts
Browse files Browse the repository at this point in the history
  • Loading branch information
duddi committed Aug 8, 2024
1 parent f8baf70 commit 22d647f
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 234 deletions.
88 changes: 22 additions & 66 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,78 +1,34 @@
name: Main
name: Build and Deploy

on:
push:
branches:
- main
pull_request:

permissions:
contents: write
pull-requests: write

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
branches:
- main

jobs:
validate:
name: Validate
build:
runs-on: ubuntu-latest
steps:
- name: ⬇️ Checkout Repo
uses: actions/checkout@v4

- name: ⬢ Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '*'
cache: npm

- name: 📦 Install Packages
run: npm ci

- name: 🧪 Test
run: npm test

release:
name: Release
runs-on: ubuntu-latest
needs: [validate]
if: github.ref_name == 'main' && (github.event_name == 'push' || github.event.pull_request.merged)
steps:
- name: ⬇️ Checkout Repo
uses: actions/checkout@v4

- name: ⬢ Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '*'
cache: npm
- name: Checkout repository
uses: actions/checkout@v2

- name: 📦 Install Packages
run: npm ci
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '16'

- name: 🏗 Build
run: npm run build
- name: Install dependencies
run: npm install

- name: 🚀 Release
run: npx semantic-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

dependabot:
name: Dependabot Auto-merge
runs-on: ubuntu-latest
needs: [validate]
if: github.actor == 'dependabot[bot]' && github.event_name == 'pull_request'
steps:
- name: 💿 Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Build project
run: npm run build

- name: ↔️ Enable Auto-merge for minor and patch Dependabot PRs
run: gh pr merge --auto --squash "$PR_URL"
if: steps.metadata.outputs.update-type == 'version-update:semver-minor' || steps.metadata.outputs.update-type == 'version-update:semver-patch'
env:
PR_URL: ${{ github.event.pull_request.html_url }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload build artifacts
uses: actions/upload-artifact@v2
with:
name: purifier-card
path: dist/
109 changes: 11 additions & 98 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,109 +1,22 @@
{
"name": "purifier-card",
"version": "1.0.0",
"description": "Air Purifier card for Home Assistant Lovelace UI",
"description": "A custom card for Home Assistant to control air purifiers",
"main": "dist/purifier-card.js",
"scripts": {
"start": "rollup -c --watch",
"lint": "eslint src",
"lint:fix": "eslint src --fix",
"format": "prettier --write .",
"build": "rollup -c",
"test": "npm run lint && npm run build",
"prepare": "husky"
"build": "rollup -c"
},
"keywords": [
"home-assistant",
"homeassistant",
"hass",
"automation",
"lovelace",
"custom-cards",
"purifier"
],
"author": "Denys Dovhan <[email protected]> (http://denysdovhan.com/)",
"license": "MIT",
"dependencies": {
"@types/lodash": "^4.14.195",
"custom-card-helpers": "^1.6.4",
"ha-template": "^1.2.2",
"home-assistant-js-websocket": "^9.1.0",
"lit": "^2.2.2",
"lodash": "^4.17.21"
"lit": "^2.0.0",
"lodash": "^4.17.21",
"ha-template": "^1.0.0"
},
"devDependencies": {
"@babel/core": "^7.9.6",
"@babel/plugin-transform-runtime": "^7.17.0",
"@babel/preset-env": "^7.16.11",
"@rollup/plugin-babel": "^6.0.3",
"@rollup/plugin-commonjs": "^25.0.2",
"@rollup/plugin-image": "^3.0.1",
"@rollup/plugin-json": "^6.0.0",
"@rollup/plugin-node-resolve": "^15.0.1",
"@rollup/plugin-replace": "^5.0.2",
"@semantic-release/git": "^10.0.1",
"@typescript-eslint/eslint-plugin": "^5.59.11",
"@typescript-eslint/parser": "^5.59.11",
"eslint": "^8.14.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import": "^2.20.2",
"husky": "^9.0.11",
"lint-staged": "^15.2.2",
"postcss-preset-env": "^9.1.2",
"prettier": "^3.2.5",
"rollup": "^2.7.6",
"rollup-plugin-html-literals": "^1.1.8",
"rollup-plugin-postcss": "^4.0.2",
"rollup-plugin-postcss-lit": "^2.0.0",
"rollup-plugin-serve": "^2.0.1",
"@rollup/plugin-commonjs": "^21.0.1",
"@rollup/plugin-node-resolve": "^13.1.1",
"rollup": "^2.56.3",
"rollup-plugin-terser": "^7.0.2",
"rollup-plugin-typescript2": "^0.36.0",
"semantic-release": "^24.0.0",
"typescript": "^5.1.3"
},
"browserslist": [
"last 2 versions",
"not dead"
],
"lint-staged": {
"*.js": "eslint --fix",
"**/*": "prettier --write --ignore-unknown"
},
"prettier": {
"singleQuote": true
},
"release": {
"branches": [
"main"
],
"plugins": [
[
"@semantic-release/commit-analyzer",
{
"preset": "angular",
"releaseRules": [
{
"type": "chore",
"scope": "deps",
"release": "patch"
}
]
}
],
"@semantic-release/release-notes-generator",
"@semantic-release/npm",
[
"@semantic-release/github",
{
"assets": [
{
"path": "dist/purifier-card.js",
"label": "purifier-card.js"
}
]
}
],
"@semantic-release/git"
]
"rollup-plugin-typescript2": "^0.31.1",
"typescript": "^4.3.5"
}
}
}
82 changes: 12 additions & 70 deletions rollup.config.mjs
Original file line number Diff line number Diff line change
@@ -1,79 +1,21 @@
/* eslint-env node */
import { createRequire } from 'node:module';
import commonjs from '@rollup/plugin-commonjs';
import nodeResolve from '@rollup/plugin-node-resolve';
import json from '@rollup/plugin-json';
import typescript from 'rollup-plugin-typescript2';
import babel from '@rollup/plugin-babel';
import image from '@rollup/plugin-image';
import postcss from 'rollup-plugin-postcss';
import postcssPresetEnv from 'postcss-preset-env';
import postcssLit from 'rollup-plugin-postcss-lit';
import commonjs from '@rollup/plugin-commonjs';
import resolve from '@rollup/plugin-node-resolve';
import { terser } from 'rollup-plugin-terser';
import minifyLiterals from 'rollup-plugin-html-literals';
import replace from '@rollup/plugin-replace';
import serve from 'rollup-plugin-serve';

const require = createRequire(import.meta.url);
const pkg = require('./package.json');

const IS_DEV = process.env.ROLLUP_WATCH;

const serverOptions = {
contentBase: ['./dist'],
host: 'localhost',
port: 5000,
allowCrossOrigin: true,
headers: {
'Access-Control-Allow-Origin': '*',
},
};

const plugins = [
nodeResolve(),
commonjs(),
json(),
replace({
values: {
PKG_VERSION_VALUE: IS_DEV ? 'DEVELOPMENT' : pkg.version,
},
preventAssignment: true,
}),
postcss({
plugins: [
postcssPresetEnv({
stage: 1,
features: {
'nesting-rules': true,
},
}),
],
extract: false,
}),
postcssLit(),
image(),
typescript(),
babel({
babelHelpers: 'runtime',
exclude: 'node_modules/**',
}),
IS_DEV && serve(serverOptions),
!IS_DEV && minifyLiterals(),
!IS_DEV &&
terser({
output: {
comments: false,
},
}),
];
import css from 'rollup-plugin-import-css';

export default {
input: 'src/purifier-card.ts',
output: {
dir: 'dist',
file: 'dist/purifier-card.js',
format: 'es',
inlineDynamicImports: true,
sourcemap: true,
},
context: 'window',
plugins,
plugins: [
resolve(),
commonjs(),
typescript({ tsconfig: './tsconfig.json' }),
terser(),
css()
],
};

0 comments on commit 22d647f

Please sign in to comment.