Page MenuHomePhabricator

Enable CI on research/landing-page repo
Closed, ResolvedPublic

Description

Following on from my comments on T257837: Enable CI for security.wikimedia.org... Are you alright if I enable CI on research/landing-page?

My plan would be to use generic-node10-docker like the design/landing-page repo does too. There might be a few failures initially, but in theory in everyones interest to clear them up (especially if related to node package related issues)

Example output:

Started by user unknown or anonymous
Running as SYSTEM
Building remotely on integration-agent-docker-1006 (pipelinelib Docker blubber) in workspace /srv/jenkins/workspace/workspace/generic-node10-docker
[generic-node10-docker] $ /bin/bash -xe /tmp/jenkins6535197912370675473.sh
+ mkdir -m 2777 -p cache
[generic-node10-docker] $ /bin/bash /tmp/jenkins8188438492650101700.sh
+ set -o pipefail
++ pwd
+ exec docker run --volume /srv/jenkins/workspace/workspace/generic-node10-docker/cache:/cache --security-opt seccomp=unconfined --init --rm --label jenkins.job=generic-node10-docker --label jenkins.build=1529 --env-file /dev/fd/63 docker-registry.wikimedia.org/releng/castor:0.2.4 load
++ /usr/bin/env
++ egrep -v '^(HOME|SHELL|PATH|LOGNAME|MAIL)='
Defined: CASTOR_NAMESPACE="design-landing-page/master/generic-node10-docker"
Syncing...
rsync: failed to set times on "/cache/.": Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1668) [generator=3.1.2]

Done
[generic-node10-docker] $ /bin/bash -xe /tmp/jenkins983568951195476476.sh
+ set -eux
+ mkdir -m 2777 -p src
[generic-node10-docker] $ /bin/bash /tmp/jenkins2540593855579674180.sh
+ set -o pipefail
+ exec docker run --user=nobody --volume /srv/jenkins/workspace/workspace/generic-node10-docker:/workspace --entrypoint=/usr/bin/find --security-opt seccomp=unconfined --init --rm --label jenkins.job=generic-node10-docker --label jenkins.build=1529 --env-file /dev/fd/63 docker-registry.wikimedia.org/wikimedia-stretch:latest /workspace/src -mindepth 1 -delete
++ /usr/bin/env
++ egrep -v '^(HOME|SHELL|PATH|LOGNAME|MAIL)='
[generic-node10-docker] $ /bin/bash -xe /tmp/jenkins7180083970871335874.sh
+ set -eux
+ mkdir -m 2777 -p log
[generic-node10-docker] $ /bin/bash /tmp/jenkins6592521992282888044.sh
+ set -o pipefail
+ exec docker run --user=nobody --volume /srv/jenkins/workspace/workspace/generic-node10-docker:/workspace --entrypoint=/usr/bin/find --security-opt seccomp=unconfined --init --rm --label jenkins.job=generic-node10-docker --label jenkins.build=1529 --env-file /dev/fd/63 docker-registry.wikimedia.org/wikimedia-stretch:latest /workspace/log -mindepth 1 -delete
++ /usr/bin/env
++ egrep -v '^(HOME|SHELL|PATH|LOGNAME|MAIL)='
[generic-node10-docker] $ /bin/bash /tmp/jenkins6976230007955303108.sh
+ set -o pipefail
++ pwd
++ pwd
+ exec docker run --volume /srv/jenkins/workspace/workspace/generic-node10-docker/src:/src --volume /srv/jenkins/workspace/workspace/generic-node10-docker/cache:/cache --volume /srv/git:/srv/git:ro --security-opt seccomp=unconfined --init --rm --label jenkins.job=generic-node10-docker --label jenkins.build=1529 --env-file /dev/fd/63 docker-registry.wikimedia.org/releng/ci-src-setup-simple:0.4.0
++ /usr/bin/env
++ egrep -v '^(HOME|SHELL|PATH|LOGNAME|MAIL)='
+ cd /src
+ git init
Initialized empty Git repository in /src/.git/
+ git fetch --quiet --update-head-ok --depth 2 git://contint1001.wikimedia.org/design/landing-page +refs/zuul/master/Z586207b293b641b89aaa7b1d12125efe:refs/zuul/master/Z586207b293b641b89aaa7b1d12125efe
+ git checkout -B master FETCH_HEAD
Reset branch 'master'
+ set +x
+ git submodule --quiet update --init --recursive
[generic-node10-docker] $ /bin/bash -eu /tmp/jenkins8516602232602803638.sh
+ chmod 2777 src
[generic-node10-docker] $ /bin/bash /tmp/jenkins6218936376206135667.sh
+ set -o pipefail
++ pwd
++ pwd
++ pwd
+ exec docker run --volume /srv/jenkins/workspace/workspace/generic-node10-docker/src:/src --volume /srv/jenkins/workspace/workspace/generic-node10-docker/cache:/cache --volume /srv/jenkins/workspace/workspace/generic-node10-docker/log:/log --security-opt seccomp=unconfined --init --rm --label jenkins.job=generic-node10-docker --label jenkins.build=1529 --env-file /dev/fd/63 docker-registry.wikimedia.org/releng/node10-test:0.6.0-s1
++ /usr/bin/env
++ egrep -v '^(HOME|SHELL|PATH|LOGNAME|MAIL)='
+ cd /src
+ '[' '!' -f package.json ']'
+ node --version
v10.15.2
+ npm --version
6.14.5
+ '[' -e npm-shrinkwrap.json ']'
+ '[' -e package-lock.json ']'
No package-lock.json or npm-shrinkwrap.json detected, doing full install
+ echo 'No package-lock.json or npm-shrinkwrap.json detected, doing full install'
+ rm -rf node_modules
+ npm install --no-progress
npm WARN deprecated postcss-cssnext@3.1.0: 'postcss-cssnext' has been deprecated in favor of 'postcss-preset-env'. Read more at https://moox.io/blog/deprecating-cssnext/
npm WARN deprecated browserslist@2.11.3: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
npm WARN deprecated circular-json@0.3.3: CircularJSON is in maintenance only, flatted is its successor.
npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.

> core-js@2.6.11 postinstall /src/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN grunt-stylelint@0.9.0 requires a peer of stylelint@^8.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN stylelint-config-wikimedia@0.4.2 requires a peer of stylelint@8.2.0 but none is installed. You must install peer dependencies yourself.

added 609 packages from 445 contributors and audited 610 packages in 10.363s

45 packages are looking for funding
  run `npm fund` for details

found 20 vulnerabilities (9 low, 2 moderate, 9 high)
  run `npm audit fix` to fix them, or `npm audit` for details
+ npm run-script test

> wmui-style-guide@0.1.0 test /src
> grunt lint

>> Local Npm module "grunt-contrib-concat" not found. Is it installed?

Running "stylelint:src" (stylelint) task
>> Linted 2 files without errors

Done.
Archiving artifacts
No artifacts found that match the file pattern "log/". Configuration error?
[PostBuildScript] - [INFO] Executing post build scripts.
Waiting for the completion of castor-save-workspace-cache
castor-save-workspace-cache #1431265 started.
castor-save-workspace-cache #1431265 completed. Result was FAILURE
[PostBuildScript] - [INFO] Executing post build scripts.
[generic-node10-docker] $ /bin/bash -xe /tmp/jenkins4444368806138138820.sh
+ echo 'Clearing /srv/jenkins/workspace/workspace/generic-node10-docker/cache'
Clearing /srv/jenkins/workspace/workspace/generic-node10-docker/cache
[generic-node10-docker] $ /bin/bash /tmp/jenkins8739801001318789690.sh
+ set -o pipefail
++ pwd
+ exec docker run --volume /srv/jenkins/workspace/workspace/generic-node10-docker/cache:/cache --security-opt seccomp=unconfined --init --rm --label jenkins.job=generic-node10-docker --label jenkins.build=1529 --env-file /dev/fd/63 docker-registry.wikimedia.org/releng/castor:0.2.1 clear
++ /usr/bin/env
++ egrep -v '^(HOME|SHELL|PATH|LOGNAME|MAIL)='
[PostBuildScript] - [INFO] Executing post build scripts.
[generic-node10-docker] $ /bin/bash -xe /tmp/jenkins3708577089113587451.sh
+ set -euxo pipefail
+ docker ps -q --filter label=jenkins.job=generic-node10-docker --filter label=jenkins.build=1529
+ xargs --no-run-if-empty docker stop
[PostBuildScript] - [INFO] Executing post build scripts.
[generic-node10-docker] $ /bin/bash /tmp/jenkins6411008566368484165.sh
+ set -o pipefail
+ exec docker run --user=root --volume /srv/jenkins/workspace/workspace/generic-node10-docker:/workspace --entrypoint=/usr/bin/find --security-opt seccomp=unconfined --init --rm --label jenkins.job=generic-node10-docker --label jenkins.build=1529 --env-file /dev/fd/63 docker-registry.wikimedia.org/wikimedia-stretch:latest /workspace -mindepth 1 -delete
++ /usr/bin/env
++ egrep -v '^(HOME|SHELL|PATH|LOGNAME|MAIL)='
[generic-node10-docker] $ /bin/bash -xe /tmp/jenkins2807951871986704604.sh
+ set -u
+ rmdir /srv/jenkins/workspace/workspace/generic-node10-docker
Finished: SUCCESS

Event Timeline

Reedy updated the task description. (Show Details)

Change 612284 had a related patch set uploaded (by Reedy; owner: Reedy):
[integration/config@master] Run node10-docker on research/landing-page

https://gerrit.wikimedia.org/r/612284

Reedy updated the task description. (Show Details)
Reedy added a subscriber: bmansurov.

@Reedy correct me if I'm wrong -- in practice, this would not noticeably change anything about our process of pushing changes to the research page? It might fail if the node10-docker has issues with it, but that would be a larger problem and very unlikely something triggered by the research landing page (and therefore likely fixed somewhat quickly because it will affect every other code-base that uses the node10-docker)?

My general thoughts are that I'm happy to standardize how updates to the landing page occur to look more like everything else but just want to make sure that I'm not introducing any unexpected blockers into our updating process. I'll rely more on @bmansurov 's expertise though.

It'd basically be similar to any other repo. Changes may fail due to other updates being needed (such as out of date/node packages with known issues if auditing packages).

But yeah, the process is basically the same. Just Jenkins will respond with a Verified status of the change, rather than having to V+2 it manually as part of the submission process, after running the defined tests and checking they pass.

Sure, if you commit something invalid, it should be flagged if the tests/checks cover it

You can control most of it via Gruntfile.js. But as things are currently, you don't even have CI enforcing style and linting. Sure, people can run the tests locally, but having CI doing it at point of submitting changes is generally better

	grunt.registerTask( 'lint', [ 'stylelint' ] );
	grunt.registerTask( 'imagery', [ 'sketch_export', 'svgmin' ] );
	grunt.registerTask( 'default', [ 'lint', 'postcss', 'cssmin' ] );

I note, after adding the CI stuff, some remedial work might be needed to get things to a better state before moving forward; whether fixing issues or changing the rules/setup used by the Gruntfile

I note, after adding the CI stuff, some remedial work might be needed to get things to a better state before moving forward; whether fixing issues or changing the rules/setup used by the Gruntfile

Ahh...this makes sense. I didn't see any HTML-specific tests being run via the patch so was trying to figure out the impact. Any way to quickly check how big of a fix would be required (working with grunt would be new to me though happy to learn)? For context, if it's fixing up HTML, I'm happy to take that on. If it's larger issues with our CSS, that's a longer project and I'd probably want to have an easy way of ignoring those tests at least for the moment.

I haven't tried to run it locally, so don't know if/what is broken. But in theory, we can disable broken tests if there's an issue

Only one way to find out ;)

Ok, let's go ahead and enable it then to see!

Change 612284 merged by jenkins-bot:
[integration/config@master] Run node10-docker on research/landing-page

https://gerrit.wikimedia.org/r/612284

Ok first run against a noop change https://gerrit.wikimedia.org/r/c/research/landing-page/+/612907

Nothing causing a failure, but looks like the package.json file needs cleaning up/updating (various abandoned packages etc), and a package.lock committing

Gruntfile.js might generally want a bit of love to bring up to date/being useful

Started by user unknown or anonymous
Running as SYSTEM
Building remotely on integration-agent-docker-1005 (pipelinelib Docker blubber) in workspace /srv/jenkins/workspace/workspace/generic-node10-docker
[generic-node10-docker] $ /bin/bash -xe /tmp/jenkins8862913587793374997.sh
+ mkdir -m 2777 -p cache
[generic-node10-docker] $ /bin/bash /tmp/jenkins8516795791369950932.sh
+ set -o pipefail
++ pwd
+ exec docker run --volume /srv/jenkins/workspace/workspace/generic-node10-docker/cache:/cache --security-opt seccomp=unconfined --init --rm --label jenkins.job=generic-node10-docker --label jenkins.build=1537 --env-file /dev/fd/63 docker-registry.wikimedia.org/releng/castor:0.2.4 load
++ /usr/bin/env
++ egrep -v '^(HOME|SHELL|PATH|LOGNAME|MAIL)='
Defined: CASTOR_NAMESPACE="research-landing-page/master/generic-node10-docker"
Syncing...
rsync: change_dir "/research-landing-page/master/generic-node10-docker" (in caches) failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1668) [Receiver=3.1.2]
rsync: read error: Connection reset by peer (104)

Done
[generic-node10-docker] $ /bin/bash -xe /tmp/jenkins2082193982202228650.sh
+ set -eux
+ mkdir -m 2777 -p src
[generic-node10-docker] $ /bin/bash /tmp/jenkins4901295602689220465.sh
+ set -o pipefail
+ exec docker run --user=nobody --volume /srv/jenkins/workspace/workspace/generic-node10-docker:/workspace --entrypoint=/usr/bin/find --security-opt seccomp=unconfined --init --rm --label jenkins.job=generic-node10-docker --label jenkins.build=1537 --env-file /dev/fd/63 docker-registry.wikimedia.org/wikimedia-stretch:latest /workspace/src -mindepth 1 -delete
++ /usr/bin/env
++ egrep -v '^(HOME|SHELL|PATH|LOGNAME|MAIL)='
[generic-node10-docker] $ /bin/bash -xe /tmp/jenkins6284280952457892209.sh
+ set -eux
+ mkdir -m 2777 -p log
[generic-node10-docker] $ /bin/bash /tmp/jenkins7591330938728677711.sh
+ set -o pipefail
+ exec docker run --user=nobody --volume /srv/jenkins/workspace/workspace/generic-node10-docker:/workspace --entrypoint=/usr/bin/find --security-opt seccomp=unconfined --init --rm --label jenkins.job=generic-node10-docker --label jenkins.build=1537 --env-file /dev/fd/63 docker-registry.wikimedia.org/wikimedia-stretch:latest /workspace/log -mindepth 1 -delete
++ /usr/bin/env
++ egrep -v '^(HOME|SHELL|PATH|LOGNAME|MAIL)='
[generic-node10-docker] $ /bin/bash /tmp/jenkins6791169607964223550.sh
+ set -o pipefail
++ pwd
++ pwd
+ exec docker run --volume /srv/jenkins/workspace/workspace/generic-node10-docker/src:/src --volume /srv/jenkins/workspace/workspace/generic-node10-docker/cache:/cache --volume /srv/git:/srv/git:ro --security-opt seccomp=unconfined --init --rm --label jenkins.job=generic-node10-docker --label jenkins.build=1537 --env-file /dev/fd/63 docker-registry.wikimedia.org/releng/ci-src-setup-simple:0.4.0
++ egrep -v '^(HOME|SHELL|PATH|LOGNAME|MAIL)='
++ /usr/bin/env
+ cd /src
+ git init
Initialized empty Git repository in /src/.git/
+ git fetch --quiet --update-head-ok --depth 2 git://contint2001.wikimedia.org/research/landing-page +refs/zuul/master/Z324c628a533a4633bb49cd5ce4c3981e:refs/zuul/master/Z324c628a533a4633bb49cd5ce4c3981e
+ git checkout -B master FETCH_HEAD
Reset branch 'master'
+ set +x
+ git submodule --quiet update --init --recursive
[generic-node10-docker] $ /bin/bash -eu /tmp/jenkins8032104919722324269.sh
+ chmod 2777 src
[generic-node10-docker] $ /bin/bash /tmp/jenkins2752578882563637062.sh
+ set -o pipefail
++ pwd
++ pwd
++ pwd
+ exec docker run --volume /srv/jenkins/workspace/workspace/generic-node10-docker/src:/src --volume /srv/jenkins/workspace/workspace/generic-node10-docker/cache:/cache --volume /srv/jenkins/workspace/workspace/generic-node10-docker/log:/log --security-opt seccomp=unconfined --init --rm --label jenkins.job=generic-node10-docker --label jenkins.build=1537 --env-file /dev/fd/63 docker-registry.wikimedia.org/releng/node10-test:0.6.0-s1
++ /usr/bin/env
++ egrep -v '^(HOME|SHELL|PATH|LOGNAME|MAIL)='
+ cd /src
+ '[' '!' -f package.json ']'
+ node --version
v10.15.2
+ npm --version
6.14.5
+ '[' -e npm-shrinkwrap.json ']'
+ '[' -e package-lock.json ']'
+ echo 'No package-lock.json or npm-shrinkwrap.json detected, doing full install'
+ rm -rf node_modules
No package-lock.json or npm-shrinkwrap.json detected, doing full install
+ npm install --no-progress
npm WARN deprecated postcss-cssnext@2.11.0: 'postcss-cssnext' has been deprecated in favor of 'postcss-preset-env'. Read more at https://moox.io/blog/deprecating-cssnext/
npm WARN deprecated coffee-script@1.10.0: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)
npm WARN deprecated browserslist@1.7.7: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
npm WARN deprecated pkg-resolve@0.1.14: Not maintained anymore.
npm WARN deprecated core-js@1.2.7: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated

> core-js@2.6.11 postinstall /src/node_modules/babel-register/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@2.6.11 postinstall /src/node_modules/babel-runtime/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

npm notice created a lockfile as package-lock.json. You should commit this file.
added 743 packages from 567 contributors and audited 745 packages in 15.016s

4 packages are looking for funding
  run `npm fund` for details

found 36 vulnerabilities (21 low, 4 moderate, 11 high)
  run `npm audit fix` to fix them, or `npm audit` for details
+ npm run-script test

> wikimedia-research-landing-page@0.1.0 test /src
> grunt

Running "stylelint:src" (stylelint) task
>> Linted 1 files without errors

Running "postcss:dist" (postcss) task
>> 1 processed stylesheet created.

Running "cssmin:target" (cssmin) task
>> 1 file created. 34.44 kB → 16.96 kB

Done.
Archiving artifacts
No artifacts found that match the file pattern "log/". Configuration error?
[PostBuildScript] - [INFO] Executing post build scripts.
Waiting for the completion of castor-save-workspace-cache
castor-save-workspace-cache #1439373 started.
castor-save-workspace-cache #1439373 completed. Result was FAILURE
[PostBuildScript] - [INFO] Executing post build scripts.
[generic-node10-docker] $ /bin/bash -xe /tmp/jenkins405162770824030944.sh
+ echo 'Clearing /srv/jenkins/workspace/workspace/generic-node10-docker/cache'
Clearing /srv/jenkins/workspace/workspace/generic-node10-docker/cache
[generic-node10-docker] $ /bin/bash /tmp/jenkins2232196062322745163.sh
+ set -o pipefail
++ pwd
+ exec docker run --volume /srv/jenkins/workspace/workspace/generic-node10-docker/cache:/cache --security-opt seccomp=unconfined --init --rm --label jenkins.job=generic-node10-docker --label jenkins.build=1537 --env-file /dev/fd/63 docker-registry.wikimedia.org/releng/castor:0.2.1 clear
++ /usr/bin/env
++ egrep -v '^(HOME|SHELL|PATH|LOGNAME|MAIL)='
[PostBuildScript] - [INFO] Executing post build scripts.
[generic-node10-docker] $ /bin/bash -xe /tmp/jenkins4003967526617412589.sh
+ set -euxo pipefail
+ docker ps -q --filter label=jenkins.job=generic-node10-docker --filter label=jenkins.build=1537
+ xargs --no-run-if-empty docker stop
[PostBuildScript] - [INFO] Executing post build scripts.
[generic-node10-docker] $ /bin/bash /tmp/jenkins3304844812751676410.sh
+ set -o pipefail
+ exec docker run --user=root --volume /srv/jenkins/workspace/workspace/generic-node10-docker:/workspace --entrypoint=/usr/bin/find --security-opt seccomp=unconfined --init --rm --label jenkins.job=generic-node10-docker --label jenkins.build=1537 --env-file /dev/fd/63 docker-registry.wikimedia.org/wikimedia-stretch:latest /workspace -mindepth 1 -delete
++ egrep -v '^(HOME|SHELL|PATH|LOGNAME|MAIL)='
++ /usr/bin/env
[generic-node10-docker] $ /bin/bash -xe /tmp/jenkins684384065311440697.sh
+ set -u
+ rmdir /srv/jenkins/workspace/workspace/generic-node10-docker
Finished: SUCCESS

Oh, and maybe a bit of a love more generally ;)

https://github.com/wikimedia/research-landing-page/blob/master/package.json#L11

`lang=json
    "url": "https://github.com/wikimedia-research/landing-page.git"

The URL is seemingly to an old (or, probably more accurately out of date) version of the repo

The URL is seemingly to an old (or, probably more accurately out of date) version of the repo

Ooof...thanks for catching that. Easy to fix. I'll start going through some of the other package information to do some of the other cleaning too.

Sounds like we can fully enable CI then on the repo without preventing us from making our usual updates and I'll see about dealing with some of these warnings.

Thanks!

There's probably someone in Release-Engineering-Team or similar that can probably advise (better than I can) about updating the gruntfile to be generally more useful for this use case too

hashar added a subscriber: hashar.

As @Reedy mentioned, committing the package-lock.json would make the operation potentially faster and also well ... locks the packages at a known version.

You might want to add ESLint for the js/fonts-loader.js file:

For another similar repository (hosting assets for a static website T254393), we went to add https://www.npmjs.com/package/htmllint which might be helpful to catch issues here and there. We did not use Grunt though: https://gerrit.wikimedia.org/r/c/labs/tools/ZppixBot/+/602300/

There is a Grunt plugin for it https://www.npmjs.com/package/grunt-htmllint but it is apparently not being taken care of anymore and is stuck to an hold version of htmllint.

@bmansurov can you look into this task and let me know what you recommend? (feel free to assign it to yourself.)

Change 621931 had a related patch set uploaded (by Bmansurov; owner: Bmansurov):
[research/landing-page@master] Add eslint

https://gerrit.wikimedia.org/r/621931

Change 621931 merged by Bmansurov:
[research/landing-page@master] Add eslint

https://gerrit.wikimedia.org/r/621931

Eslint has been added.

Tried adding htmllint, but it's complaining about valid HTML. For example, this one: https://github.com/htmllint/htmllint/issues/267.

I think it's best if we just skip htmllint. We have stylelint and eslint, which should be good. And browsers are forgiving when it comes to invalid HTML.

If no one objects, I think we can call this task done.

Change 621932 had a related patch set uploaded (by Bmansurov; owner: Bmansurov):
[research/landing-page@master] WIP: add htmllint

https://gerrit.wikimedia.org/r/621932

Eslint has been added.

Tried adding htmllint, but it's complaining about valid HTML. For example, this one: https://github.com/htmllint/htmllint/issues/267.

I think it's best if we just skip htmllint. We have stylelint and eslint, which should be good. And browsers are forgiving when it comes to invalid HTML.

If no one objects, I think we can call this task done.

Whatever works for yourselves. Originally it was mostly no CI checking anything, so we're in a better place than we were.

Certainly if there's show stopper bugs like that in applicable tools, no one is going to force you to use it. And as it's over a year since any commits to htmlint, it definitely (unfortunately) doesn't look like an actively maintained project.

Are you still having to submit patches manually? If so, we should probably fix that before calling this bug done (as enabling CI config was done in this task)

Are you still having to submit patches manually? If so, we should probably fix that before calling this bug done (as enabling CI config was done in this task)

Yes, manually. I'll push a fix.

Change 621932 abandoned by Bmansurov:
[research/landing-page@master] WIP: add htmllint

Reason:

https://gerrit.wikimedia.org/r/621932

Change 623190 had a related patch set uploaded (by Bmansurov; owner: Bmansurov):
[research/landing-page@master] Configure CI to run unit tests

https://gerrit.wikimedia.org/r/623190

Change 623190 merged by Bmansurov:
[research/landing-page@master] Configure CI to run unit tests

https://gerrit.wikimedia.org/r/623190

Change 623192 had a related patch set uploaded (by Bmansurov; owner: Bmansurov):
[integration/config@master] Add research/landing-page test pipeline

https://gerrit.wikimedia.org/r/623192

@Reedy I've submitted a patch above. Could you review it? If I understood the tutorial correctly, this should be enough to auto-submit on +2.

Change 623192 merged by jenkins-bot:
[integration/config@master] Add research/landing-page test pipeline

https://gerrit.wikimedia.org/r/623192

Isaac claimed this task.

I'm gonna close this task because sounds like @bmansurov put in a good pipeline into place. Don't hesitate to re-open if there are still remaining steps. Thanks all!