vue를 gitlab pages (Gitlab CE)에서 공개하려고 할 때 잠시 시간이 걸렸기 때문에 작업 내용을 메모하십시오.

1. 전제


  • AWS EC2 + ALB에서 docker-compose.yml에서 gitlab을 시작했습니다.
  • DNS는 Route53이고 SSL은 ACM입니다.
  • gitlab 버전은 11.8.
  • vue cli 버전은 3.2.1.

  • 2. docker-compose.yml 업데이트


  • 아래 pages_external_urlgitlab_pages['inplace_chroot'] 줄 추가.
  • web:
      image: 'gitlab/gitlab-ce:latest'
      container_name: 'gitlab'
      restart: always
      hostname: 'git.example.com'
      environment:
        GITLAB_OMNIBUS_CONFIG: |
            external_url 'https://git.example.com'
            nginx['listen_port'] = 80
            nginx['listen_https'] = false
            gitlab_rails['gitlab_shell_ssh_port'] = 22
            gitlab_rails['time_zone'] = 'Asia/Tokyo'
            gitlab_rails['gitlab_email_enabled'] = true
            gitlab_rails['gitlab_email_from'] = '[email protected]'
            gitlab_rails['gitlab_email_display_name'] = 'Admin'
            gitlab_rails['gitlab_email_reply_to'] = '[email protected]'
            gitlab_rails['smtp_enable'] = true
            gitlab_rails['smtp_address'] = 'xxxxx.us-east-1.amazonaws.com'
            gitlab_rails['smtp_port'] = 587
            gitlab_rails['smtp_user_name'] = 'xxxxxxxxxxxxx'
            gitlab_rails['smtp_password'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
            gitlab_rails['smtp_domain'] = 'example.com'
            gitlab_rails['smtp_authentication'] = 'login'
            gitlab_rails['smtp_enable_starttls_auto'] = true
    +        pages_external_url 'https://pages.git.example.com'
    +        gitlab_pages['inplace_chroot'] = true
      ports:
        - '8080:80'
        - '10022:22'
      volumes:
        - '/srv/gitlab/config:/etc/gitlab'
        - '/srv/gitlab/logs:/var/log/gitlab'
        - '/srv/gitlab/data:/var/opt/gitlab'
    
  • gitlab 재부팅
  • sudo docker-compose restart
    
  • 프로젝트 메뉴의 Settings에서 Pages가 증가해야 합니다.

  • 3. SSL 인증서 발급 및 ALB 구성 추가



    AWS ACM


  • *.pages.git.example.com 인증서를 만듭니다.
  • 현재는 https://git.example.com 에서 gitlab을 운용한다고 가정.


  • AWS ALB


  • 타겟 생성
  • 리스너 규칙 추가
  • 리스너 인증서 추가
  • 위에서 발급 한 SSL을 추가합니다.


  • 4. 프로젝트 (리포지토리) 바로 아래에 .gitlab-ci.yml 만들기


  • vue create myproject 를 만들면 public 디렉토리가 작성되지만, 여기에서는 방해이므로 삭제하고 있다.
  • tags 는 ci runner 에 대한 설정입니다.
  • image: node:latest
    pages:
      stage: deploy
      only:
        - master
      before_script:
        - 'npm install'
      script:
        - 'npm run build'
        - 'rm -fr public'
        - 'cp -pr dist public'
      tags:
        - shared
      artifacts:
        paths:
          - public
    

    5. 프로젝트 (리포지토리) 바로 아래에 vue.config.js가 없으면 생성


  • css 나 js 로딩을 상대 경로로 만들고 싶었기 때문입니다.
  • 다음은 편리하게 상당히 무의미한 설명이다. 하고 싶은 것은 publicPath: "./"

  • module.exports = {
      publicPath: process.env.NODE_ENV === "production" ? "./" : "./"
    };
    

    6. http 리디렉션 설정을 ALB에 추가


  • pages_external_url에서 https를 지정해도 링크로 표시되는 것은 http.
  • 어딘가 설정이 나쁜 것일지도 모르지만, 일단 httphttps 에 리디렉션 할 수 있도록(듯이) 했다.



  • 이상

    좋은 웹페이지 즐겨찾기