Добавил CI/CD
This commit is contained in:
		
							
								
								
									
										59
									
								
								.gitea/workflows/gitea-push-docker.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								.gitea/workflows/gitea-push-docker.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | ||||
| name: Create and publish a Docker image | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: ["main"] | ||||
|  | ||||
| env: | ||||
|   REGISTRY: git.zetcraft.ru | ||||
|  | ||||
| jobs: | ||||
|   publish: | ||||
|     runs-on: ubuntu-latest | ||||
|     name: Publish image | ||||
|     container: catthehacker/ubuntu:act-latest | ||||
|     permissions: | ||||
|       contents: read | ||||
|       packages: write | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout repository | ||||
|         uses: actions/checkout@v3 | ||||
|  | ||||
|       - name: Log in to the Container registry | ||||
|         uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 | ||||
|         with: | ||||
|           registry: ${{ env.REGISTRY }} | ||||
|           username: ${{ gitea.actor }} | ||||
|           password: ${{ secrets.TOKEN }} | ||||
|  | ||||
|       - name: Extract metadata (tags, labels) for Docker | ||||
|         id: meta | ||||
|         uses: https://github.com/docker/metadata-action@v4 | ||||
|         with: | ||||
|           images: ${{ env.REGISTRY }}/${{ gitea.repository }} | ||||
|  | ||||
|       - name: Build and push Docker image | ||||
|         uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 | ||||
|         with: | ||||
|           context: ./ | ||||
|           push: true | ||||
|           tags: ${{ steps.meta.outputs.tags }} | ||||
|           labels: ${{ steps.meta.outputs.labels }} | ||||
|   deploy: | ||||
|     needs: publish | ||||
|     name: Deploy image | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|       - name: install ssh keys | ||||
|         # check this thread to understand why its needed: | ||||
|         # <https://stackoverflow.com/a/70447517> | ||||
|         run: | | ||||
|           install -m 600 -D /dev/null ~/.ssh/id_rsa | ||||
|           echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa | ||||
|           ssh-keyscan -H ${{ secrets.SSH_HOST }} > ~/.ssh/known_hosts | ||||
|       - name: connect and pull | ||||
|         run: ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "cd ${{ secrets.WORK_DIR }} && docker compose pull && docker compose up -d && docker image prune && exit" | ||||
|       - name: cleanup | ||||
|         run: rm -rf ~/.ssh | ||||
							
								
								
									
										17
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| FROM node:20-alpine3.17 AS builder | ||||
|  | ||||
| WORKDIR /app | ||||
| COPY package.json package-lock.json .eslintrc.cjs vite.config.ts index.html ./ | ||||
| COPY public/ public/ | ||||
| COPY src/ src/ | ||||
| RUN npm ci | ||||
| RUN npm run build | ||||
|  | ||||
| FROM nginx:1.25.2-alpine | ||||
| COPY nginx.conf /etc/nginx/conf.d/default.conf | ||||
| COPY --from=builder /app/build /usr/share/nginx/html | ||||
| RUN touch /var/run/nginx.pid | ||||
| RUN chown -R nginx:nginx /var/run/nginx.pid /usr/share/nginx/html /var/cache/nginx /var/log/nginx /etc/nginx/conf.d | ||||
| USER nginx | ||||
| EXPOSE 80 | ||||
| CMD ["nginx", "-g", "daemon off;"] | ||||
							
								
								
									
										27
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,8 +1,25 @@ | ||||
| # React + Vite | ||||
| # CyberBloomFrontend | ||||
|  | ||||
| This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. | ||||
| # Docker | ||||
|  | ||||
| Currently, two official plugins are available: | ||||
| ```bash | ||||
| docker run -d -p 80:80 \ | ||||
| --name CyberBloom \ | ||||
| --restart=always \ | ||||
| -e TZ=Europe/Moscow \ | ||||
| git.zetcraft.ru/cyberbloom/ogeetocasecybergarden:main | ||||
| ``` | ||||
|  | ||||
| - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh | ||||
| - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh | ||||
| # Docker Compose | ||||
|  | ||||
| ```yml | ||||
| services: | ||||
|     cyberbloomfrontend: | ||||
|         ports: | ||||
|             - '80:80' | ||||
|         container_name: CyberBloom | ||||
|         restart: always | ||||
|         environment: | ||||
|             - TZ=Europe/Moscow | ||||
|         image: 'git.zetcraft.ru/cyberbloom/ogeetocasecybergarden:main' | ||||
| ``` | ||||
							
								
								
									
										9
									
								
								nginx.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								nginx.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| server_tokens off; | ||||
| server { | ||||
|     listen       80; | ||||
|     location / { | ||||
|         root   /usr/share/nginx/html; | ||||
|         index  index.html index.htm; | ||||
|         try_files $uri /index.html; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user