diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index ab0eac2..42b0997 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -3,10 +3,13 @@ run-name: ${{ gitea.actor }} is building a BAB App artifact 🚀 on: push: branches: - - devel + - main + - alpha jobs: build: + env: + RUNNER_TOOL_CACHE: /toolcache runs-on: ubuntu-18.04 steps: - name: Checkout @@ -29,23 +32,18 @@ jobs: - name: Show env file run: | /bin/cat .env.local - - name: Build Project - run: quasar build -m pwa - - name: Get Version Number - id: get_version - run: echo "::set-output name=VERSION::$(node -p "require('./package.json').version")" - - name: Tarfile + - name: Build and Release + id: build run: | - cd dist/pwa - tar czf ../../build-${{ steps.get_version.outputs.VERSION }}.tar.gz . - - name: Upload Artifact - uses: actions/upload-artifact@v3 - with: - name: build-artifact-${{ steps.get_version.outputs.VERSION }}.${{ gitea.run_number }} - path: build-${{ steps.get_version.outputs.VERSION }}.tar.gz + npx semantic-release + env: + GITEA_TOKEN: ${{ secrets.GT_TOKEN }} + GITEA_URL: ${{ vars.GT_URL }} - name: Trigger Ansible Deploy Playbook uses: https://github.com/distributhor/workflow-webhook@v3 with: webhook_url: ${{ vars.WEBHOOK_URL }} + webhook_auth_type: "bearer" + webhook_auth: "Token:${{ secrets.WEBHOOK_SECRET }}" verbose: true - data: '{ "artifact_url": "${{ gitea.server_url }}/${{ gitea.repository }}/actions/runs/${{ gitea.run_id}}/artifacts/build-artifact-${{ steps.get_version.outputs.VERSION }}.${{ gitea.run_number }}" }' + data: '{ "artifact_url": "${{ gitea.server_url }}/${{ gitea.repository }}/releases/download/v${{ steps.build.outputs.VERSION }}/release-${{ steps.build.outputs.VERSION }}.tar.gz" }' diff --git a/.gitignore b/.gitignore index 80d5a86..923ecae 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,9 @@ yarn-error.log* # local .env files .env* + +# version file +src/version.js +VERSION +release-*.gz +CHANGELOG.md diff --git a/.releaserc.json b/.releaserc.json new file mode 100644 index 0000000..1d6155e --- /dev/null +++ b/.releaserc.json @@ -0,0 +1,26 @@ +{ + "branches": [ + "main", + "next", + { "name": "beta", "prerelease": true }, + { "name": "alpha", "prerelease": true } + ], + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + "@semantic-release/changelog", + [ + "@semantic-release/exec", + { + "prepareCmd": "npm run generate-version '${nextRelease.version}' && quasar build -m pwa", + "publishCmd": "tar -czvf release-${nextRelease.version}.tar.gz -C dist/pwa . && echo '::set-output name=VERSION::${nextRelease.version}'" + } + ], + [ + "@saithodev/semantic-release-gitea", + { + "assets": ["release-${nextRelease.version}.tar.gz"] + } + ] + ] +} diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..77d6f4c --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.0.0 diff --git a/generate-version.js b/generate-version.js new file mode 100644 index 0000000..f48eab9 --- /dev/null +++ b/generate-version.js @@ -0,0 +1,22 @@ +const fs = require('fs'); +const path = require('path'); + +try { + const version = process.argv[2]; + + if (!version) throw Error('Must pass version on command line'); + + // Create version content + const versionContent = `export const APP_VERSION = '${version}';\n`; + const versionTxtFilePath = path.resolve(__dirname, './VERSION'); + const versionFilePath = path.resolve(__dirname, 'src/version.js'); + + // Write version to TXT file + fs.writeFileSync(versionTxtFilePath, version, 'utf8'); + // Write version to js file + fs.writeFileSync(versionFilePath, versionContent, 'utf8'); + console.log(`Version file generated with version: ${version}`); +} catch (error) { + console.error('Error generating version file:', error); + process.exit(1); +} diff --git a/package.json b/package.json index fef1772..febafb9 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,17 @@ { "name": "oys_bab", - "version": "0.6.2", + "version": "0.0.0", "description": "Manage a Borrow a Boat program for a Yacht Club", "productName": "OYS Borrow a Boat", "author": "Patrick Toal ", "private": true, "scripts": { + "generate-version": "node generate-version.js", "lint": "eslint --ext .js,.ts,.vue ./", "format": "prettier --write \"**/*.{js,ts,vue,scss,html,md,json}\" --ignore-path .gitignore", "test": "echo \"No test specified\" && exit 0", - "dev": "quasar dev", - "build": "quasar build" + "dev": "npm run generate-version && quasar dev -m pwa", + "build": "npm run generate-version && quasar build -m pwa" }, "dependencies": { "@quasar/extras": "^1.16.11", @@ -26,7 +27,9 @@ }, "devDependencies": { "@quasar/app-vite": "^1.9.1", + "@saithodev/semantic-release-gitea": "^2.1.0", "@semantic-release/changelog": "^6.0.3", + "@semantic-release/exec": "^6.0.3", "@semantic-release/github": "^10.0.6", "@semantic-release/npm": "^12.0.1", "@types/node": "^12.20.21", diff --git a/quasar.config.js b/quasar.config.js index 08542f1..a7a4741 100644 --- a/quasar.config.js +++ b/quasar.config.js @@ -9,10 +9,8 @@ // https://v2.quasar.dev/quasar-cli-vite/quasar-config-js const { configure } = require('quasar/wrappers'); -const packageJson = require('./package.json'); -const gitCommitInfo = require('git-commit-info'); -module.exports = configure(function ({ dev }) { +module.exports = configure(function () { return { eslint: { // fix: true, @@ -50,11 +48,6 @@ module.exports = configure(function ({ dev }) { // Full list of options: https://v2.quasar.dev/quasar-cli-vite/quasar-config-js#build build: { - env: { - VUE_APP_VERSION: dev - ? 'dev-' + gitCommitInfo().shortHash - : packageJson.version, - }, target: { browser: ['es2019', 'edge88', 'firefox78', 'chrome87', 'safari13.1'], node: 'node16', diff --git a/src/components/ToolbarComponent.vue b/src/components/ToolbarComponent.vue index 68f4866..98bf937 100644 --- a/src/components/ToolbarComponent.vue +++ b/src/components/ToolbarComponent.vue @@ -11,7 +11,7 @@ {{ pageTitle }} -
v{{ VERSION }}
+
v{{ APP_VERSION }}
import { ref } from 'vue'; import LeftDrawer from 'components/LeftDrawer.vue'; - -const VERSION = process.env.VUE_APP_VERSION; +import { APP_VERSION } from 'src/version'; const leftDrawerOpen = ref(false); function toggleLeftDrawer() { diff --git a/src/components/boat/BoatPreviewComponent.vue b/src/components/boat/BoatPreviewComponent.vue index 3982d00..9b7a4f1 100644 --- a/src/components/boat/BoatPreviewComponent.vue +++ b/src/components/boat/BoatPreviewComponent.vue @@ -1,9 +1,11 @@