首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建和部署失败

构建和部署失败
EN

Stack Overflow用户
提问于 2021-08-02 08:15:37
回答 1查看 80关注 0票数 1

我们使用NunjucksGitLab来创建和部署我们的项目网站。

直到一周前,还没有问题,但突然我们注意到,在构建和部署后,对网站的更改将不会生效。

一旦我们修改了一些东西,我们运行npm run gulp all,如果没有错误,我们从dist文件夹中打开网页,看看是否一切正常。如果我们感到满意,我们提交并推送,这会自动触发GitLab CI/CD作业,几分钟后,实时网站会显示更改。

下面是我们的.gitlab-ci.yml中的代码

代码语言:javascript
复制
before_script:
  ##
  ## Run ssh-agent inside the build environment.
  ##
  - eval $(ssh-agent -s)

  ##
  ## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store.
  ##
  - echo "$SSH_PRIVATE_KEY" | ssh-add - > /dev/null

  ##
  ## Create the SSH directory and give it the right permissions.
  ##
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh

  ##
  ## Add Host Keys.
  ##
  - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
  - chmod 644 ~/.ssh/known_hosts

stages: 
  - build
  - deploy

prod_build:
  stage: build
  script:
    - echo "Build"
    - npm install --loglevel verbose
    - npm install natives@1.1.6
    - npm run gulp all
    - ls
  only:
    - master
  tags:
    - Sisyphus
  
prod_deploy:
  stage: deploy
  script:
    - echo "Deploy to webserver"
    - npm install --loglevel verbose
    - npm install natives@1.1.6
    - npm run gulp all
    - rsync -av dist/ blah@blahblah.com:/var/www/blah/ --delete
  allow_failure: false
  environment:
    name: deploy
  only:
  - master
  tags:
    - Sisyphus
  when: always

以上内容未发生变化。以前一切都很好。因此,我们不知道为什么最近的过程没有更新网站。

这是我们的gulpfile.js的内容

代码语言:javascript
复制
var gulp = require('gulp') ;
var watch = require('gulp-watch') ;
var nunjucksRender = require('gulp-nunjucks-render');
var rev = require('gulp-rev');
var revRewrite = require('gulp-rev-rewrite');
var gulpClean = require('gulp-clean');

function clean() {
  return gulp.src('dist', { read: false, allowEmpty: true })
  // Renders template with nunjucks.
  .pipe( gulpClean() )
}

function renderNunjucks() {
  // Gets .html and .nunjucks files in pages.
  return gulp.src('pages/**/*.+(html|njk)')
  // Renders template with nunjucks.
  .pipe(nunjucksRender({
      path: ['templates', 'pages']
    }))
  // Outputs files in app folder.
  .pipe( gulp.dest('dist') )
}

function copyStatic() {
    return gulp.src('public/**/*')
  .pipe( rev() )
  .pipe( gulp.dest('dist') )
  .pipe( rev.manifest() )
  .pipe( gulp.dest('dist') );
}

function RevRewrite() {
  const manifest = gulp.src('dist/rev-manifest.json');
  return gulp.src('dist/**/*')
  .pipe( revRewrite({ manifest }) )
  .pipe( gulp.dest('dist') );
}

gulp.task('clean', clean);
gulp.task('nunjucks', gulp.series('clean', renderNunjucks))
gulp.task('copy', gulp.series('clean', copyStatic));
gulp.task('rev-rewrite', gulp.series('nunjucks', RevRewrite));
gulp.task('all', gulp.series(clean, gulp.parallel(copyStatic, renderNunjucks), RevRewrite));

当然,我们已经查看了Jobs日志文件,以查看是否有任何错误或红色标志,但似乎一切正常,并以一条Job succeeded消息结束。

可能的原因是什么?我们怀疑某些清理工作失败了,因为有时我们会比较dist和live网站的页面(通过检查它们),并意识到,例如,index.css文件是空的,而它应该包含我们放在其中的css内容。

我们如何找出这是不是破坏了进程的更新,或者rsync没有同步和清理,等等?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-04 06:06:32

尝试在rsync命令的末尾添加一个checksum

代码语言:javascript
复制
rsync -av dist/ blah@blahblah.com:/var/www/blah/ --delete --checksum

如果您的文件的大小和/或日期由于某些原因没有更改,这种情况通常会发生...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68618380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档