# Using the node alpine image to build the React app image: node:alpine # Announce the URL as per CRA docs # https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#advanced-configuration variables: PUBLIC_URL: /myems # Cache node modules - speeds up future builds cache: paths: - node_modules # Name the stages involved in the pipeline stages: - deploy # Job name for gitlab to recognise this results in assets for Gitlab Pages # https://docs.gitlab.com/ee/user/project/pages/introduction.html#gitlab-pages-requirements pages: stage: deploy script: - npm install # Install all dependencies - npm run build --prod # Build for prod - mv public _public # CRA and gitlab pages both use the public folder. Only do this in a build pipeline. - mv build public # Move build files to public dir for Gitlab Pages - cp public/index.html public/404.html # Required for react router browser history, but helps with https://blog.pshrmn.com/how-single-page-applications-work/ artifacts: paths: - public # The built files for Gitlab Pages to serve only: - master # Only run on master branch