Fix: Update npm install command to use --legacy-peer-deps for compati… #7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Push Multi-Arch Docker Image | |
| on: | |
| push: | |
| branches: [feature/cicd/generate-docker-image ] | |
| tags: [ 'v*' ] | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # Checkout source | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| # Get version from tag or fallback to short SHA | |
| - name: Extract version | |
| id: vars | |
| run: | | |
| if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then | |
| VERSION=${GITHUB_REF_NAME} | |
| else | |
| VERSION=2.0.1 | |
| fi | |
| echo "version=$VERSION" >> $GITHUB_OUTPUT | |
| - name: Generate Dockerfile | |
| run: | | |
| cat << 'EOF' > Dockerfile | |
| FROM node:20-alpine | |
| WORKDIR /app | |
| RUN npm install -g npm | |
| COPY package*.json . | |
| RUN npm cache clean --force | |
| RUN npm install --legacy-peer-deps --prefer-online | |
| RUN npm run build | |
| EXPOSE 80 | |
| CMD ["npm", "run", "start"] | |
| EOF | |
| echo "✅ Dockerfile created" | |
| # Generate package.json dynamically | |
| - name: Generate package.json | |
| run: | | |
| echo "{ | |
| \"name\": \"@evershop/evershop\", | |
| \"version\": \"${{ steps.vars.outputs.version }}\", | |
| \"dependencies\": { | |
| \"@evershop/evershop\": \"${{ steps.vars.outputs.version }}\" | |
| }, | |
| \"devDependencies\": { | |
| \"esbuild\": \"^0.20.1\", | |
| \"tsx\": \"^4.19.3\", | |
| \"typescript\": \"^5.8.3\" | |
| }, | |
| \"type\": \"module\", | |
| \"scripts\": { | |
| \"start\": \"evershop start\", | |
| \"build\": \"evershop build\", | |
| \"setup\": \"evershop install\", | |
| \"seed\": \"evershop seed\", | |
| \"user:create\": \"evershop user:create\", | |
| \"user:changePassword\": \"evershop user:changePassword\" | |
| } | |
| }" > package.json | |
| # Log in to Docker Hub | |
| - name: Log in to Docker Hub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| # Set up Docker Buildx for multi-platform build | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| # Build and push multi-platform image | |
| - name: Build and push Docker image | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: . | |
| file: ./Dockerfile | |
| platforms: linux/amd64,linux/arm64 | |
| push: true | |
| tags: | | |
| ${{ secrets.DOCKERHUB_USERNAME }}/evershop:latest | |
| ${{ secrets.DOCKERHUB_USERNAME }}/evershop:${{ steps.vars.outputs.version }} |