feat: add ci
This commit is contained in:
35
.gitea/workflows/main.yaml
Normal file
35
.gitea/workflows/main.yaml
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
name: Docker Image CI
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: gitea-runner-group-myplayer
|
||||||
|
container:
|
||||||
|
image: ${{ vars.HARBOR_URL }}/candlelight/action_builder:v0.0.1
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: docker login
|
||||||
|
env:
|
||||||
|
HARBOR_USERNAME: ${{ secrets.HARBOR_ROBOT }}
|
||||||
|
HARBOR_PASSWORD: ${{ secrets.HARBOR_ROBOT_SECRET }}
|
||||||
|
HARBOR_URL: ${{ vars.HARBOR_URL }}
|
||||||
|
run: docker login ${HARBOR_URL} -u ${HARBOR_USERNAME} -p ${HARBOR_PASSWORD}
|
||||||
|
- name: Build and push Docker images
|
||||||
|
env:
|
||||||
|
HARBOR_URL: ${{ vars.HARBOR_URL }}
|
||||||
|
TAG: ${{ github.sha }}
|
||||||
|
REPOSITORY: ${{ github.repository }}
|
||||||
|
run: |
|
||||||
|
ROOT_DIR=$(pwd)
|
||||||
|
IMAGE_NAME="${HARBOR_URL}/testing/$REPOSITORY:${TAG}"
|
||||||
|
echo "Building image: ${IMAGE_NAME}"
|
||||||
|
docker build -t ${IMAGE_NAME} .
|
||||||
|
echo "Pushing image: ${IMAGE_NAME}"
|
||||||
|
docker push ${IMAGE_NAME}
|
||||||
|
echo "Successfully pushed: ${IMAGE_NAME}"
|
||||||
|
docker rmi ${IMAGE_NAME}
|
||||||
|
echo "cleaned up local image"
|
||||||
34
.gitea/workflows/tag.yaml
Normal file
34
.gitea/workflows/tag.yaml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
name: Docker Image CI
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: gitea-runner-group-myplayer
|
||||||
|
container:
|
||||||
|
image: ${{ vars.HARBOR_URL }}/candlelight/action_builder:v0.0.1
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: docker login
|
||||||
|
env:
|
||||||
|
HARBOR_USERNAME: ${{ secrets.HARBOR_ROBOT }}
|
||||||
|
HARBOR_PASSWORD: ${{ secrets.HARBOR_ROBOT_SECRET }}
|
||||||
|
HARBOR_URL: ${{ vars.HARBOR_URL }}
|
||||||
|
run: docker login ${HARBOR_URL} -u ${HARBOR_USERNAME} -p ${HARBOR_PASSWORD}
|
||||||
|
- name: Build and push Docker images
|
||||||
|
env:
|
||||||
|
HARBOR_URL: ${{ vars.HARBOR_URL }}
|
||||||
|
REPOSITORY: ${{ github.repository }}
|
||||||
|
run: |
|
||||||
|
ROOT_DIR=$(pwd)
|
||||||
|
IMAGE_NAME="${HARBOR_URL}/$REPOSITORY:$GITHUB_REF_NAME"
|
||||||
|
echo "Building image: ${IMAGE_NAME}"
|
||||||
|
docker build -t ${IMAGE_NAME} .
|
||||||
|
echo "Pushing image: ${IMAGE_NAME}"
|
||||||
|
docker push ${IMAGE_NAME}
|
||||||
|
echo "Successfully pushed: ${IMAGE_NAME}"
|
||||||
|
docker rmi ${IMAGE_NAME}
|
||||||
|
echo "cleaned up local image"
|
||||||
17
Dockerfile
Normal file
17
Dockerfile
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
FROM registry.merlin.xin/library/node:20-bullseye AS build
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY package*.json ./
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm \
|
||||||
|
npm install
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
|
||||||
|
FROM registry.merlin.xin/mirrors/nginxinc/nginx-unprivileged:stable
|
||||||
|
|
||||||
|
COPY --from=build /app/dist /app/dist
|
||||||
@@ -25,7 +25,8 @@
|
|||||||
<ul class="memberlist" style="overflow: auto">
|
<ul class="memberlist" style="overflow: auto">
|
||||||
<li v-for="(item) in members" :key="item.u_id" class="memberlistitem">
|
<li v-for="(item) in members" :key="item.u_id" class="memberlistitem">
|
||||||
<div class="user-profile">
|
<div class="user-profile">
|
||||||
<img :src="item.u_avatar" alt="User Avatar" />
|
<!-- <img :src="item.u_avatar" alt="User Avatar" /> -->
|
||||||
|
<img :src="defaultAvatar" alt="User Avatar" />
|
||||||
<div :class="['status-dot', item.status]"></div>
|
<div :class="['status-dot', item.status]"></div>
|
||||||
</div>
|
</div>
|
||||||
<el-text style="width: 100%;" truncated>{{ item.u_name }}#{{ item.u_id }}</el-text>
|
<el-text style="width: 100%;" truncated>{{ item.u_name }}#{{ item.u_id }}</el-text>
|
||||||
@@ -67,7 +68,8 @@
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<div class="updateProfile">
|
<div class="updateProfile">
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
<img :src="avatarPreview" alt="头像">
|
<!-- <img :src="avatarPreview" alt="头像"> -->
|
||||||
|
<img :src="defaultAvatar" alt="User Avatar" />
|
||||||
</div>
|
</div>
|
||||||
<el-col :span="12" v-if="role === 1 || role === 0">
|
<el-col :span="12" v-if="role === 1 || role === 0">
|
||||||
<input type="file" id="avatar" @change="handleAvatarChange" accept="image/*" />
|
<input type="file" id="avatar" @change="handleAvatarChange" accept="image/*" />
|
||||||
@@ -142,6 +144,7 @@ import {
|
|||||||
ROOM_SOCKET_VIDEO_SYNC_EVENT,
|
ROOM_SOCKET_VIDEO_SYNC_EVENT,
|
||||||
sendMessage
|
sendMessage
|
||||||
} from '@/websocket/roomSocket';
|
} from '@/websocket/roomSocket';
|
||||||
|
import defaultAvatar from '@/assets/defaultavatar.jpg';
|
||||||
|
|
||||||
//import audioPlayer from '@/components/audioPlayer.vue'; // 假设你有一个音频播放组件
|
//import audioPlayer from '@/components/audioPlayer.vue'; // 假设你有一个音频播放组件
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user