Добавил 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 | # Docker Compose | ||||||
| - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh |  | ||||||
|  | ```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