メインコンテンツにスキップ

Jenkins を使用してnodeをビルド

環境変数

  • システムアドミニストレーション->グローバル属性 -> 環境変数 -> 新しいキーを追加します。
  • JENKINS_WORKSPACE : /var/lib/docker/volumes/soft_jenkin_home/_data/workspace

NodeJS の設定

# 下载NodeJS插件
# 调整[系统管理 -> 全局工具配置 -> nodeJS 配置]
# nodejs 14.15.0

Jenkins の設定

  • フリースタイルでプロジェクトを作成する
  • ソースとしてgiteeを使用
  • [构建环境] セクションに [Provide Node & npm bin/folder to PATH] を追加します。
  • [构建]ステップ に[shell]ステップを追加します。

pwd

# ディスクのインストール中の全コンテンツの
rm -rf dist

# 依存関係(不要)
npm install --registry https://registry.npm.taobao. rg
# ビルドプロジェクト
npm run build:prod

# node_modulesとdist 以外の全てのコンテンツ
ls | grep -v 'node_modules\|dist' | xargs rm -rf

  • シェルを実行します
  • ミラーリングがプライベートにアップロードされました
  • PS: Jenkinsのデプロイには remote/jenkins.ymlファイル (通常はコンテナにdockerコマンドを使用) が必要です

export app_version=${BUILD_NUMBER}

cd $WORKSPACE

mkdir -p ./nginx/conf.d/

# 添加default.conf文件
tee ./nginx/conf.d/default.conf <<-'EOF'
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html; # 用于解决刷新页面后,显示404的问题
    }

}
EOF

# 编辑Dockerfile文件
echo "FROM nginx:stable-alpine" > Dockerfile
echo "MAINTAINER Fa" >> Dockerfile
echo "WORKDIR /usr/share/nginx/html" >> Dockerfile
echo "RUN rm -rf *" >> Dockerfile
echo "ADD ./dist ." >> Dockerfile
echo "ADD ./nginx/conf.d/default.conf /etc/nginx/conf.d/" >> Dockerfile
echo "EXPOSE 80" >> Dockerfile

# 登录阿里云私仓 todo <username>和<password>需要手动替换成真实的数据
echo <password> | docker login -u <username> --password-stdin registry.cn-zhangjiakou.aliyuncs.com

# 构建镜像
docker build -t $JOB_NAME:$app_version .

# 上传镜像到私服
docker tag $JOB_NAME:$app_version registry.cn-zhangjiakou.aliyuncs.com/fa/$JOB_NAME:$app_version
docker push registry.cn-zhangjiakou.aliyuncs.com/fa/$JOB_NAME:$app_version

# 退出阿里云私仓
docker logout

  • ビルド手順に[Send files or execute commands over SSH (ssh-リモートでシェルコマンド) を追加しながらステップの追加]

export app_version=${BUILD_NUMBER}

# 创建工作目录
mkdir -p /www/temp/jenkins/docker
cd /www/temp/jenkins/docker

# 编辑stack yml文件
tee $JOB_NAME.yml <<-'EOF'
version: '3.5'
services:
  $JOB_NAME:
    image: registry.cn-zhangjiakou.aliyuncs.com/fa/$JOB_NAME:${app_version}
    environment:
      TZ: "Asia/Shanghai"
    networks:
      - middleware
    deploy:
      replicas: 1
      update_config:
        parallelism: 1
      restart_policy:
        condition: on-failure
networks:
  middleware:
    external: true
EOF

docker stack up -c $JOB_NAME.yml app --with-registry-auth