Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature(point-of-sale): AB testing #235

Merged
merged 8 commits into from
Jun 24, 2024
Merged
76 changes: 76 additions & 0 deletions .github/workflows/point-of-sale-docker-ab.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Point of Sale - Dockerize - AB Test

on:
workflow_dispatch:
push:
branches: [ develop ]
pull_request:
branches: [ develop ]

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

jobs:
dockerize:
runs-on: ubuntu-latest
container:
image: docker:dind
steps:
- name: upgrade git
run: |
apk add --update
apk add git
git --version

- name: Checkout repository
uses: actions/checkout@v4
with:
path: .
fetch-depth: 0
fetch-tags: true

- name: Set up environment - main
env:
ENV_FILE: ${{ vars.ENV_FILE_PRODUCTION }}
run: |
echo "${ENV_FILE}" > ./apps/point-of-sale/.env

- name: Get Docker meta (for tags)
id: meta
uses: docker/metadata-action@v4
with:
# list of Docker images to use as base name for tags
images: |
${{ vars.DOCKER_REGISTRY }}/${{ vars.DOCKER_TAG_POS }}
# generate Docker tags based on the following events/attributes
tags: |
type=ref,event=branch,pattern={{branch}}-AB
type=semver,pattern={{version}}

- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Login to SudoSOS Container Registry
if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
uses: docker/login-action@v2
with:
registry: ${{ vars.DOCKER_REGISTRY }}
username: ${{ secrets.SVC_GH_SUDOSOS_USERNAME }}
password: ${{ secrets.SVC_GH_SUDOSOS_PWD }}

# Build and push Docker image with Buildx
- name: Build and push
uses: docker/build-push-action@v3
with:
context: .
platforms: linux/amd64 #SudoSOS does not run on linux/arm64
push: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
file: "apps/point-of-sale/Dockerfile"
2 changes: 2 additions & 0 deletions .github/workflows/point-of-sale-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ jobs:
uses: actions/checkout@v4
with:
path: .
fetch-depth: 0
fetch-tags: true

- name: Set up environment - main
env:
Expand Down
1 change: 1 addition & 0 deletions apps/point-of-sale/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ WORKDIR /app
COPY lib/common/ lib/common/
COPY apps/point-of-sale/package.json apps/point-of-sale/
COPY ./package.json ./package-lock.json ./
COPY ./.git ./
RUN npm install
COPY apps/point-of-sale/ apps/point-of-sale/
RUN npm run build --workspace=sudosos-point-of-sale
Expand Down
2 changes: 2 additions & 0 deletions apps/point-of-sale/env.d.ts
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
/// <reference types="vite/client" />
declare const __GIT_BRANCH__: string;
declare const __GIT_COMMIT__: string;
15 changes: 15 additions & 0 deletions apps/point-of-sale/src/components/GitInfo.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<template>
<div class="absolute tag font-bold opacity-30"> {{branch}}#{{commit}} </div>
</template>

<script setup lang="ts">
const branch = __GIT_BRANCH__;
const commit = __GIT_COMMIT__;
</script>

<style scoped lang="scss">
.tag {
bottom: 10px;
right: 10px;
}
</style>
2 changes: 2 additions & 0 deletions apps/point-of-sale/src/views/LoginView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
</div>
</div>
<SettingsIconComponent />
<GitInfo/>
<EanLoginComponent :handle-login="eanLogin"/>
</template>

Expand All @@ -43,6 +44,7 @@ import { useCartStore } from '@/stores/cart.store';
import apiService from '@/services/ApiService';
import BannerComponent from '@/components/Banner/BannerComponent.vue';
import EanLoginComponent from "@/components/EanLoginComponent.vue";
import GitInfo from "@/components/GitInfo.vue";

const userStore = useUserStore();
const authStore = useAuthStore();
Expand Down
20 changes: 20 additions & 0 deletions apps/point-of-sale/vite.config.plugin-git-info.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { execSync } from 'child_process';

export default function useGitInfo(): Record<string, any> {
let branch: string, commit: string;
try {
branch = execSync('git rev-parse --abbrev-ref HEAD').toString().trim();
commit = execSync('git rev-parse --short HEAD').toString().trim();
} catch (error) {
console.error(error);
branch = 'unknown';
commit = 'unknown';
}

console.error(branch, commit);

return {
__GIT_BRANCH__: JSON.stringify(branch),
__GIT_COMMIT__: JSON.stringify(commit),
};
}
4 changes: 4 additions & 0 deletions apps/point-of-sale/vite.config.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { fileURLToPath, URL } from 'node:url';
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import useGitInfo from "./vite.config.plugin-git-info";

// https://vitejs.dev/config/
export default defineConfig({
Expand All @@ -23,5 +24,8 @@ export default defineConfig({
},
server: {
port: 5174
},
define: {
...useGitInfo(),
}
});
Loading