Skip to content

Commit a07118c

Browse files
authored
Merge pull request #52 from TeamVastsea/chore/ci
Chore: CI/CD
2 parents f25ac03 + e2dd7ff commit a07118c

File tree

2 files changed

+58
-68
lines changed

2 files changed

+58
-68
lines changed

.github/workflows/docker-image.yml

Lines changed: 35 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2,67 +2,58 @@ name: CI/CD
22

33
on:
44
push:
5-
branches: ["main", "feat-user-manage"]
6-
workflow_dispatch:
5+
branches:
6+
- main
77

88
jobs:
99
build_docker:
1010
name: Build Docker
1111
runs-on: ubuntu-latest
1212
steps:
13-
- name: Checkout
14-
uses: actions/checkout@v3
15-
- name: Set up QEMU
16-
uses: docker/setup-qemu-action@v2
17-
- name: Set up Docker Buildx
18-
uses: docker/setup-buildx-action@v2
13+
- name: Docker meta
14+
id: meta
15+
uses: docker/metadata-action@v5
16+
with:
17+
images: |
18+
${{ vars.DOCKERHUB_USERNAME }}/${{ vars.IMAGE_NAME }}
19+
${{ vars.CR }}/${{ vars.NAMESPACE }}/${{ vars.IMAGE_NAME }}
20+
${{ vars.ACR }}/${{ vars.NAMESPACE }}/${{ vars.IMAGE_NAME }}
21+
tags: |
22+
type=sha
23+
latest
1924
- name: Login to DockerHub
20-
uses: docker/login-action@v2
25+
uses: docker/login-action@v3
2126
with:
2227
username: ${{ vars.DOCKERHUB_USERNAME }}
2328
password: ${{ secrets.DOCKERHUB_PASSWORD }}
29+
- name: Login to CR
30+
uses: docker/login-action@v3
31+
with:
32+
registry: ${{ vars.CR }}
33+
username: ${{ github.actor }}
34+
password: ${{ secrets.CR_TOKEN }}
35+
- name: Login to ACR
36+
uses: docker/login-action@v3
37+
with:
38+
registry: ${{ vars.ACR }}
39+
username: ${{ vars.ACR_USERNAME }}
40+
password: ${{ secrets.ACR_PASSWORD }}
41+
- name: Set up QEMU
42+
uses: docker/setup-qemu-action@v3
43+
- name: Set up Docker Buildx
44+
uses: docker/setup-buildx-action@v3
2445
- name: Build and push
25-
id: docker_build
26-
uses: docker/build-push-action@v4
46+
uses: docker/build-push-action@v6
2747
with:
28-
context: .
2948
push: true
30-
platforms: linux/amd64
31-
tags: |
32-
${{ vars.DOCKERHUB_USERNAME }}/${{ vars.IMAGE_NAME }}:${{ github.ref == 'refs/heads/main' && 'latest' || 'user' }}
49+
tags: ${{ steps.meta.outputs.tags }}
50+
labels: ${{ steps.meta.outputs.labels }}
3351
cache-from: type=gha
3452
cache-to: type=gha,mode=max
35-
36-
build_docker_acr:
37-
name: Build Docker ACR
38-
runs-on: ubuntu-latest
39-
steps:
40-
- name: Checkout
41-
uses: actions/checkout@v3
42-
- name: Login to ACR
43-
uses: aliyun/acr-login@v1
44-
with:
45-
login-server: https://${{ vars.REGISTRY_ADDRESS }}
46-
username: "${{ vars.REGISTRY_USERNAME }}"
47-
password: "${{ secrets.REGISTRY_PASSWORD }}"
48-
- name: Build and push image
49-
run: |
50-
docker build -t ${{ vars.REGISTRY_ADDRESS }}/${{ vars.REGISTRY_NAMESPACE }}/${{ vars.IMAGE_NAME }}:${{ github.ref == 'refs/heads/main' && 'latest' || 'user' }} .
51-
docker push ${{ vars.REGISTRY_ADDRESS }}/${{ vars.REGISTRY_NAMESPACE }}/${{ vars.IMAGE_NAME }}:${{ github.ref == 'refs/heads/main' && 'latest' || 'user' }}
52-
53-
deploy:
54-
name: Deploy
55-
needs: [build_docker, build_docker_acr]
56-
runs-on: ubuntu-latest
57-
if: github.ref == 'refs/heads/main'
58-
steps:
5953
- name: SSH To Host
60-
uses: appleboy/ssh-action@v1.0.1
54+
uses: appleboy/ssh-action@v1
6155
with:
6256
host: ${{ secrets.SSH_HOST }}
6357
username: ${{ secrets.SSH_USER }}
6458
key: ${{ secrets.SSH_KEY }}
65-
port: ${{ secrets.SSH_PORT }}
66-
script: |
67-
cd ${{ secrets.PROJECT_PATH }}
68-
sudo bash ./deploy.sh
59+
script_path: ${{ secrets.PROJECT_PATH }}/deploy.sh
Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
1-
FROM node:24-alpine AS base
2-
3-
FROM base AS builder
4-
ENV CI=true
5-
ENV PNPM_HOME="/pnpm"
6-
ENV PATH="$PNPM_HOME:$PATH"
7-
WORKDIR /app
8-
RUN apk add --no-cache libc6-compat
9-
10-
COPY . .
11-
RUN corepack enable pnpm && \
12-
pnpm i --frozen-lockfile && \
13-
pnpm build
14-
15-
FROM base AS runner
16-
WORKDIR /app
17-
ENV NODE_ENV=production
18-
19-
COPY --from=builder /app/public ./public
20-
COPY --from=builder /app/.next/standalone ./
21-
COPY --from=builder /app/.next/static ./.next/static
22-
23-
EXPOSE 3000
24-
CMD ["node", "server.js"]
1+
FROM node:24-alpine AS base
2+
3+
FROM base AS builder
4+
ENV CI=true
5+
ENV PNPM_HOME="/pnpm"
6+
ENV PATH="$PNPM_HOME:$PATH"
7+
WORKDIR /app
8+
9+
COPY . .
10+
RUN corepack enable pnpm && \
11+
pnpm i --frozen-lockfile && \
12+
pnpm build
13+
14+
FROM base AS runner
15+
WORKDIR /app
16+
ENV NODE_ENV=production
17+
18+
COPY --from=builder /app/public ./public
19+
COPY --from=builder /app/.next/standalone ./
20+
COPY --from=builder /app/.next/static ./.next/static
21+
22+
EXPOSE 3000
23+
CMD ["node", "server.js"]

0 commit comments

Comments
 (0)