Гиперавтоматизированный пайплайн
🍄🍄🍄🍄🍄
Почему я так радуюсь каждому кейсу про беспилотники в суде? Потому что чем быстрее человечество научится решать юридические проблемы беспилотников, тем быстрее беспилотники окажутся на наших улицах.
💩💩💩 лучше чем 💩
Continuous Integration / Continuous Delivery
Continuous Integration / Continuous Delivery
💩💩💩 лучше чем 💩
...
<ul class="tab">
<li>Login</li>
<li>SignUp</li>
</ul>
...
...
<ul class="tab">
<li>{ i18n('Login')}</li>
<li>{ i18n('SignUp')}</li>
</ul>
...
JSXText: (node) => {
context.report({
node,
message: 'Text "{{value}}" should be localized',
data: { value: node.value },
});
}
JSXText: (node) => {
context.report({
...
fix: fixer => fixer.replaceText(node, fixI18n(value)),
...
});
}
describe('test', () => {
test('should works', () => {
...
});
});
module.exports = {
parser: "@typescript-eslint/parser",
plugins: ["@typescript-eslint"],
parserOptions: {
ecmaVersion: 2019,
sourceType: "module",
ecmaFeatures: { jsx: true },
},
settings: {
react: {
version: "detect"
}
}
};
let completed: boolean; // ⛔️
let hasCompleted: boolean;
Любое извращение на ваш вкус
"dependencies": {
"package-n1": "^1.1.0"
"package-n2": "~5.1.0"
"package-n3": "file:../foo/bar"
}
"dependencies": {
"@company/platform": "^1.1.0"
}
<type>[optional scope]: <description>
[optional body]
[optional footer]
{
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
}
{
...
coverageThreshold: {
global: {
branches: 23,
functions: 23,
lines: 23,
statements: 23,
},
}
...
}
Каждый компонент должен как минимум ренедриться
it('renders correctly', () => {
const tree = renderer
.create(Facebook)
.toJSON();
expect(tree).toMatchSnapshot();
});
exports[`renders correctly 1`] = `
Facebook
`;
module.exports = ctx => {
findReactComponents(ctx.files).forEach(file => {
if(!isTestFileExist(file)){
ctx.report({
message: `File ${file} does not exist.`
});
}
})
};
npm i -D testcontainers
const container = await new GenericContainer("redis")
.withExposedPorts(6379)
.start();
const redisClient = redis.createClient(
container.getMappedPort(6379),
container.getContainerIpAddress(),
);
const container = await GenericContainer.fromDockerfile(buildContext)
.withBuildArg("ARG_KEY", "ARG_VALUE")
.build();
const startedContainer = await container
.withExposedPorts(8080)
.start();
twitter: @zolotyh
telegram: @aazolotyh
github: @zolotyh