From d7dbbb80bb507b28d51b7d639987b8a1d3729985 Mon Sep 17 00:00:00 2001 From: Paul Donohue Date: Sun, 16 Feb 2025 19:00:46 -0500 Subject: [PATCH] Automate release process --- .github/workflows/{build.yml => build.yaml} | 12 ++++++-- .github/workflows/release.yml | 13 +++++---- .gitignore | 1 + package-lock.json | 32 +++++++++++++++++++-- package.json | 10 ++++--- rollup.config.mjs | 14 +++++++++ src/config-template-card.ts | 4 +-- src/const.ts | 1 - src/version.ts | 1 + 9 files changed, 71 insertions(+), 17 deletions(-) rename .github/workflows/{build.yml => build.yaml} (51%) delete mode 100644 src/const.ts create mode 100644 src/version.ts diff --git a/.github/workflows/build.yml b/.github/workflows/build.yaml similarity index 51% rename from .github/workflows/build.yml rename to .github/workflows/build.yaml index 54ba090..d49a31c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yaml @@ -1,4 +1,4 @@ -name: "Build" +name: Build on: push: @@ -9,12 +9,20 @@ on: - master jobs: - build: + test_build: name: Build runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - name: Build run: | npm install npm run build + + - name: Archive distribution bundle + uses: actions/upload-artifact@v4 + with: + path: dist/config-template-card.js + name: config-template-card-latest-build.js + overwrite: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e8475f3..47ab886 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,27 +1,28 @@ name: Release on: - release: - types: [published] + push: + tags: + - '*' jobs: release: - name: Prepare release + name: Prepare Release runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build run: | - cd /home/runner/work/config-template-card/config-template-card npm install npm run build - - name: Upload as release + - name: Upload as Release uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: /home/runner/work/config-template-card/config-template-card/dist/config-template-card.js + file: dist/config-template-card.js asset_name: config-template-card.js tag: ${{ github.ref }} + prerelease: ${{ contains(github.ref_name, 'beta') || contains(github.ref_name, 'rc') }} overwrite: true diff --git a/.gitignore b/.gitignore index 0f21f19..787feb1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /node_modules/ /yarn.lock +/.version.json /.tsbuildinfo /dist/ diff --git a/package-lock.json b/package-lock.json index 21d85bf..ece36d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,10 @@ { "name": "config-template-card", - "version": "1.3.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "config-template-card", - "version": "1.3.1", "license": "MIT", "dependencies": { "custom-card-helpers": "^1.9.0", @@ -18,6 +16,7 @@ "@rollup/plugin-typescript": "^12.1.2", "rollup": "^4.24.3", "rollup-plugin-serve": "^3.0.0", + "rollup-plugin-version-injector": "1.3.3", "tslib": "^2.8.1", "typescript": "~5.7.3", "typescript-eslint": "^8.24.0" @@ -905,6 +904,16 @@ "node": ">=4.2.0" } }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", @@ -1563,6 +1572,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -1896,6 +1912,18 @@ "opener": "1" } }, + "node_modules/rollup-plugin-version-injector": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-version-injector/-/rollup-plugin-version-injector-1.3.3.tgz", + "integrity": "sha512-+Rrf0xIFHkwFGuMfphVlAOtd9FlhHFh3vrDwamJ6+YR3IxebRHGVT879qwWzZ1CpWMCLlngb2MmHW5wC5EJqvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.1.0", + "dateformat": "^4.2.1", + "lodash": "^4.17.20" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", diff --git a/package.json b/package.json index 82760c3..e803bd3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,5 @@ { "name": "config-template-card", - "version": "1.3.1", "description": "Lovelace config-template-card", "keywords": [ "home-assistant", @@ -20,6 +19,7 @@ }, "devDependencies": { "rollup": "^4.24.3", + "rollup-plugin-version-injector": "1.3.3", "@rollup/plugin-node-resolve": "^15.3.0", "@rollup/plugin-eslint": "^9.0.5", "typescript-eslint": "^8.24.0", @@ -34,8 +34,10 @@ } }, "scripts": { - "devl": "rollup --config --watch", - "build": "rollup --config", - "lint": "eslint" + "version": "echo \"{ \\\"version\\\": \\\"$(git describe --exact-match --tags 2>/dev/null || git rev-parse --short HEAD)\\\" }\" > .version.json", + "devl": "npm run version && rollup --config --watch", + "lint": "eslint", + "build": "npm run version && rollup --config", + "release": "rel() { git tag \"$1\" && git push origin tag \"$1\" ; } ; rel" } } diff --git a/rollup.config.mjs b/rollup.config.mjs index f9b77b2..d608251 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -1,3 +1,4 @@ +import versionInjector from 'rollup-plugin-version-injector'; import { nodeResolve } from '@rollup/plugin-node-resolve'; import eslint from '@rollup/plugin-eslint'; import typescript from '@rollup/plugin-typescript'; @@ -12,6 +13,19 @@ export default { sourcemap: true, }, plugins: [ + versionInjector({ + packageJson: './.version.json', + injectInComments: { + fileRegexp: /\.js$/, + tag: 'Version: {version} - {date}', + dateFormat: 'yyyy-mm-dd HH:MM:ss', + }, + injectInTags: { + fileRegexp: /\.js$/, + tagId: 'VI', + }, + logLevel: 'warn', + }), nodeResolve(), eslint({ throwOnError: false, diff --git a/src/config-template-card.ts b/src/config-template-card.ts index 916e2c3..771e618 100644 --- a/src/config-template-card.ts +++ b/src/config-template-card.ts @@ -3,11 +3,11 @@ import { customElement, property, state } from 'lit/decorators.js'; import { computeCardSize, HomeAssistant, LovelaceCard } from 'custom-card-helpers'; import { ConfigTemplateConfig, ConfigTemplateVars } from './types'; -import { CARD_VERSION } from './const'; +import { VERSION } from './version'; import { isString } from './util'; console.info( - `%c CONFIG-TEMPLATE-CARD \n%c Version ${CARD_VERSION} `, + `%c CONFIG-TEMPLATE-CARD \n%c Version ${VERSION} `, 'color: orange; font-weight: bold; background: black', 'color: white; font-weight: bold; background: dimgray', ); diff --git a/src/const.ts b/src/const.ts deleted file mode 100644 index ad8e161..0000000 --- a/src/const.ts +++ /dev/null @@ -1 +0,0 @@ -export const CARD_VERSION = '1.3.7-beta.1'; diff --git a/src/version.ts b/src/version.ts new file mode 100644 index 0000000..c12bac8 --- /dev/null +++ b/src/version.ts @@ -0,0 +1 @@ +export const VERSION = '[VI]{version}[/VI]';