diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 00000000..2af3a11c --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,58 @@ +name: Browsertrix Cloud Release Build + +on: + release: + types: [published] + +jobs: + btrix-release: + runs-on: ubuntu-22.04 + + steps: + - + name: Checkout + uses: actions/checkout@v3 + + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - + name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - + name: Set Env Vars + run: | + echo VERSION=`cat version.txt` >> $GITHUB_ENV + echo GIT_COMMIT_HASH=`git rev-parse --short HEAD` >> $GITHUB_ENV + echo GIT_BRANCH_NAME=`git rev-parse --abbrev-ref HEAD` >> $GITHUB_ENV + + - + name: Build Backend + uses: docker/build-push-action@v3 + with: + context: backend + push: true + tags: ${{ env.REPO_PREFIX }}webrecorder/browsertrix-backend:${{ env.VERSION }}, webrecorder/browsertrix-backend:latest + cache-from: type=gha,scope=backend + cache-to: type=gha,scope=backend,mode=max + + - + name: Build Frontend + uses: docker/build-push-action@v3 + with: + context: frontend + push: true + build-args: | + VERSION=${{ env.VERSION }} + GIT_COMMIT_HASH=${{ env.GIT_COMMIT_HASH }} + GIT_BRANCH_NAME=${{ env.GIT_BRANCH_NAME }} + + tags: ${{ env.REPO_PREFIX }}webrecorder/browsertrix-frontend:${{ env.VERSION }}, webrecorder/browsertrix-frontend:latest + cache-from: type=gha,scope=frontend + cache-to: type=gha,scope=frontend,mode=max + diff --git a/backend/btrixcloud/version.py b/backend/btrixcloud/version.py new file mode 100644 index 00000000..51b7abae --- /dev/null +++ b/backend/btrixcloud/version.py @@ -0,0 +1,2 @@ +""" current version """ +__version__ = "1.1.0-beta.0" diff --git a/frontend/Dockerfile b/frontend/Dockerfile index e4abcc39..70d7d405 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,13 +1,15 @@ # central place to configure the production replayweb.page loading prefix -ARG RWP_BASE_URL=https://cdn.jsdelivr.net/npm/replaywebpage@1.5.8/ +ARG RWP_BASE_URL=https://cdn.jsdelivr.net/npm/replaywebpage/ FROM node:16 as build ARG GIT_COMMIT_HASH ARG GIT_BRANCH_NAME +ARG VERSION ENV GIT_COMMIT_HASH=${GIT_COMMIT_HASH} \ - GIT_BRANCH_NAME=${GIT_BRANCH_NAME} + GIT_BRANCH_NAME=${GIT_BRANCH_NAME} \ + VERSION=${VERSION} WORKDIR /app diff --git a/frontend/package.json b/frontend/package.json index 53cf42b2..6fd691dd 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,9 +1,8 @@ { - "name": "frontend", - "version": "1.0.0", + "name": "browsertrix-frontend", + "version": "1.1.0-beta.0", "main": "index.ts", - "license": "MIT", - "private": true, + "license": "AGPLv3", "dependencies": { "@cheap-glitch/mi-cron": "^1.0.1", "@formatjs/intl-displaynames": "^5.2.5", diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index 8e7f3d64..9e74ce7e 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -6,6 +6,7 @@ const HtmlWebpackPlugin = require("html-webpack-plugin"); const CopyPlugin = require("copy-webpack-plugin"); const childProcess = require("child_process"); const packageJSON = require("./package.json"); +const fs = require("fs"); const isDevServer = process.env.WEBPACK_SERVE; @@ -51,6 +52,18 @@ const shoelaceAssetsSrcPath = path.resolve( ); const shoelaceAssetsPublicPath = "shoelace/assets"; +const version = (() => { + if (process.env.VERSION) { + return process.env.VERSION; + } + + try { + return fs.readFileSync("../version.txt", {encoding: "utf-8"}).trim(); + } catch(e) {} + + return packageJSON.version; +})(); + module.exports = { entry: "./src/index.ts", output: { @@ -102,7 +115,7 @@ module.exports = { rwp_base_url: RWP_BASE_URL, glitchtip_dsn: process.env.GLITCHTIP_DSN || "", environment: isDevServer ? "development" : "production", - version: packageJSON.version, + version, gitBranch, commitHash, }, diff --git a/update-version.sh b/update-version.sh new file mode 100755 index 00000000..f3d1259d --- /dev/null +++ b/update-version.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +version=`cat version.txt` +jq ".version=\"$version\"" ./frontend/package.json > ./tmp-package.json +mv ./tmp-package.json ./frontend/package.json + +echo '""" current version """' > ./backend/btrixcloud/version.py +echo "__version__ = \"$version\"" >> ./backend/btrixcloud/version.py diff --git a/version.txt b/version.txt new file mode 100644 index 00000000..2e501697 --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ +1.1.0-beta.0