我们使用Nunjucks和GitLab来创建和部署我们的项目网站。
直到一周前,还没有问题,但突然我们注意到,在构建和部署后,对网站的更改将不会生效。
一旦我们修改了一些东西,我们运行npm run gulp all,如果没有错误,我们从dist文件夹中打开网页,看看是否一切正常。如果我们感到满意,我们提交并推送,这会自动触发GitLab CI/CD作业,几分钟后,实时网站会显示更改。
下面是我们的.gitlab-ci.yml中的代码
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的内容
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没有同步和清理,等等?
发布于 2021-08-04 06:06:32
尝试在rsync命令的末尾添加一个checksum:
rsync -av dist/ blah@blahblah.com:/var/www/blah/ --delete --checksum如果您的文件的大小和/或日期由于某些原因没有更改,这种情况通常会发生...
https://stackoverflow.com/questions/68618380
复制相似问题