auto
maven
ãã©ã°ã€ã³ããªãã¡ã¯ã¿ãªã³ã°ããŠãæ®ãã®auto
ãšã®äžè²«æ§ãé«ããäœæ¥ãéå§ããŸããã ããããããšã§ãç§ã¯ããã€ãã®çµè«ã«éããŸããã
maven
ãã©ã°ã€ã³ã䜿çšããmaven-release-plugin
auto
ã®çŸåšã®èŠä»¶ã¯ããããžã§ã¯ããmaven-release-plugin
ã§ãã ããã«ã¯ããã€ãã®çµæãããã auto
é©åããŸããã
äž»èŠãªæ©èœmaven-release-plugin
ãå®è¡ã次ã®æé ãçµç±ããŠrelease:prepare
ïŒ
ãããŠããªãªãŒã¹ã¯release:perform
ä»ããŠè¡ãããŸãïŒ
deploy
site-deploy
ïŒããã©ã°ã€ã³ãauto
ãšäžè²«ããæ¹æ³ã§åäœããããšãä¿èšŒããããã«ãçŸåšã®å®è£
ã§ã¯ãããã€ãã®gitããã«ãŒã䜿çšããŠã release:prepare
ãŽãŒã«ã«ãã£ãŠè¡ãããã³ããããç Žæ£ããŸãã èšãæãããšã maven-release-plugin
ã¯ã auto
ãèšèšãããŠããäœæ¥ãå®è¡ããŠãããããé©åã§ã¯ãªãæ¹æ³ã§ãåé¿ãããå¿
èŠããããŸãã
çŸåš-çããéèŠæ¹æ³ã¯ããªããžããªãšèè
æ
å ±ãæœåºããããã«äœ¿çšãããmaven
ãã©ã°ã€ã³ã®äœ¿çš<scm/>
ããã³<developers/>
ã®ã»ã¯ã·ã§ã³pom.xml
å°åºããŸããã®æ
å ±ã ããã¯ãgitã¡ã¿ããŒã¿ã䜿çšããæ®ãã®auto
ã§äœ¿çšãããæ¹æ³ãšã¯ç°ãªããŸãã çŸåšã®å®è£
ã«ã¯ããã€ãã®åé¡ããããŸãã
author
ã¯ã pom.xml
ã®<developers/>
ã»ã¯ã·ã§ã³ãä»ããŠèšå®ãããŸããã€ãŸããã³ããããå®è¡ãã人ã¯ãéžæããauthor
ãšåãã§ã¯ãªãå¯èœæ§ããããŸãã git commitã®äœæè
ã<developers/>
æ
å ±ãšäžŠã¹ãè©Šã¿ã¯ãããŸãããowner
ããã³repo
æ
å ±ã¯ã <scm/>
ã»ã¯ã·ã§ã³ãä»ããŠèšå®ãããŸããããã¯ãçŸåšã®ã¯ããŒã³ã®å®éã®ãªããžããªããã³ææè
ãšã¯ç°ãªãå ŽåããããŸãããã©ã°ã€ã³ãããã«æ·±ãæãäžããŠããããgradle
ãã©ã°ã€ã³ãšæ¯èŒãããšã maven-release-plugin
ããåŸãããå¯äžã®ç®æšã¯ã release:update-versions
ã§ããããã«èŠããŸãããŽãŒã«ã ãã®ç®æšã¯ãããã€ãã®åçŽãªXMLåŠçã«ç°¡åã«çœ®ãæããããšãã§ããŸãã
maven-release-plugin
ãç¶æãããªãŒããŒããããšæå°éã®å©ç¹ãèãããšãç§ã®èãã§ã¯ãèŠä»¶ã解é€ãã auto
maven
ãã©ã°ã€ã³ãããå€ãã®auto
å®è£
ããå¿
èŠããããŸãã
åæããŸãïŒ
ç§ãpom.xmlããåŸãæ å ±ã«é¢ããããªãã®ãã€ã³ãã®ã»ãšãã©ã¯ããããããããã®ãã£ãŒã«ãã«ã€ããŠã®ç§ã®èª€è§£ã«é¢ä¿ããŠããŸãã ããã§ã®å€æŽã¯å€§æè¿ã§ãã
ç§ã¯ç§ãã¡ãããªããã°ãªããªãã©ããªé倧ãªå€æŽã«ããã¹ãŠè³æã§ãã ãããããïŒ1156ã§è©³è¿°ãããŠããå°ããªç Žå£çãªå€æŽã®ããã€ããããŒã«ããã¯ããããšãã§ããŸã
<scm/>
ãš<developers/>
ã«é¢ããç§ã®2ã€ã®ãã€ã³ããééã£ãŠããããã§ãã npm
ãã©ã°ã€ã³ã¯ãããããpackage.json
ãããã«ããŸãã ããã¯ãããããpom.xml
é
眮ãããã¹ãã§ããããšãæå³ããŸããïŒ
ããããnpm repository
author
ãã£ãŒã«ããšpom
ã§ããå Žåãã¯ãã
äœè ã¯ãä»ããŠèšå®ãããŸã
pom.xmlã®ã»ã¯ã·ã§ã³ãããã¯ãã³ããããå®è¡ãã人ããéžæããäœæè ãšåãã§ãªãå Žåãããããšãæå³ããŸãã gitcommitã®äœæè ã æ å ±ã
ããã¯npmãã©ã°ã€ã³ã«ãåœãŠã¯ãŸããŸãã ããŒã«ã«èªåã¯git
æ§æããªãŒããŒã©ã€ãããŸããããCIç°å¢ã§ã¯author
ãcommit`ã«èšå®ããå¿
èŠãããå ŽåããããŸãã
ææè ãšãªããžããªã®æ å ±ã¯ã
ã»ã¯ã·ã§ã³ãããã¯ãçŸåšã®ã¯ããŒã³ã®å®éã®ãªããžããªããã³ææè ãšã¯ç°ãªãå ŽåããããŸãã
ããã¯éãã®ã§ããããïŒ npmã®äžçã§ã¯ã repository
ãã£ãŒã«ãã¯éåžžãããã±ãŒãžã®ã³ãŒããæããŸãã å®éã«ã¯ãéåžžã fork
ã§auto
ãå®è¡ããããšã¯ãããŸãããå®è¡ããå Žåã¯ã repository
ãã£ãŒã«ãããã©ãŒã¯ã«æŽæ°ããããšãæã¿ãŸãã
ããŠãããã¯çã«ããªã£ãŠããŸã-ãããã£ãŠãé©åãªåäœã¯ãããã®ãã®ïŒçŸåšïŒãæ¢ãããšã§ãããããŠããããpom.xml
ã«èŠã€ãããªãå Žåã¯ãæ»ã£ãŠ.autorc
èšå®ãããŠãããšä»®å®ããŸã
ãããèŠã€ãããªãå Žåã¯ãçŸåšããã©ã°ã€ã³ããšã©ãŒã«ãªããŸã<scm/>
ãš<developers/>
ã®ã»ã¯ã·ã§ã³pom.xml
ã
ãããããããã¯ééããªããã°ã§ãã ãšã©ãŒãã¹ããŒããªãããã«ããhttps://github.com/intuit/auto/blob/master/plugins/npm/src/index.ts#L504
æ©æ¢°å¯èªãªæ¹æ³ã§auto
ããããŒãžã§ã³NUMBERãååŸããæ¹æ³ã¯ãããŸããïŒ auto version
ã³ãã³ãããæ°å€ã§ã¯ãªããããŒãžã§ã³ãã³ãã®TYPEãçæããããšã«é©ããŸããã
--quiet
ã䜿çšã§ããã³ãã³ãã«ãã£ãŠçæãããããŒãžã§ã³ã®ã¿ãåºåãããŸãã ãŸãã¯ã --dry-run
ãšãã¢ãªã³ã°ãããšã次ã«å
¬éãããããŒãžã§ã³ã確èªã§ããŸãã
version
ãå®éã®ããŒãžã§ã³ãåãåºãããã«ãã©ã°ãè¿œå ããããšæããããããŸããã ããã¯ããã«ãããã±ãŒãžã·ããªãªã§ã¯å¥åŠã«ãªããŸã
ããããŸãã åŒã³åºãå ã«ä»»ããŠãæ¢ããŠããããŒãžã§ã³ãç¹å®ããããšããå§ãããŸãã
ãã«ãããã±ãŒãžã·ããªãªã«ã€ããŠã®ããªãã®ãã€ã³ãã¯ããã«é¢ä¿ããŠããŸã-maven-release-pluginã¯ãã®ã¿ã€ãã®ã·ããªãªãããã«ãµããŒãããŸãã ãã®äœåãåçŸããããã©ããçåã«æããŸãã ç§ã¯å°ãè¡ãè©°ãŸã£ãŠããããšã«æ°ã¥ããŠããŸã-äžæ¹ã§ã¯ãmaven-release-pluginã䜿çšããªããšããç§ã®äž»åŒµã¯æå¹ã§ãããä»æ¹ã§ã¯ããµãã¢ãžã¥ãŒã«ã®ããŒãžã§ã³ç®¡çã®ãããªãã®ã¯éèŠãªãŠãŒã¹ã±ãŒã¹ã§ãã察åŠããå¿ èŠããããmaven-release-pluginã§ã«ããŒãããŠããŸãã
release:prepare
éã«mavenãã©ã°ã€ã³ããªããžããªãå€æŽããã®ãé²ãããã«äœ¿çšã§ããmaven-release-pluginã䜿çšãã2ã€ã®æ¹æ³ãèŠã€ããŸããããããã¯ãæ¬æ¥é
ãã«ãã¹ãããäºå®ã§ãã
@hipstersmoothie getAuthor
ã getRepo
ãªã©ã®ããã¯ã®åäœã«ã€ããŠè³ªåããããŸã-REïŒ //github.com/intuit/auto/issues/1260#issuecommentã«é¢ããã³ã¡ã³ã- 634280655ãç§ã¯ãã¹ããèŠãŠããŸãããããŠåœŒãã¯ãããšççŸããŠããããã§ãã
ãããã£ãŠã undefined
AuthorInformation
ãè¿ããŠãããšã©ãŒã¯ã¹ããŒãããŸããã
ç§ãééã£ãŠããå¯èœæ§ãããããšããŸãã¯ããã¯åŠçã«throw
ãåå°å
¥ããå¿
èŠããããã©ããã«ã€ããŠã®ææ¡ã¯ãããŸããïŒ
ä»ã®ãã¹ãŠã®ãã©ã°ã€ã³ãã©ã®ããã«æ©èœããããèãããšãããã¯ééããªãééã£ãŠããŸãã æªå®çŸ©ãè¿ãã®ãæ£ããæ¹æ³ã§ãã ããããã°ãå¿
èŠã«å¿ããŠã core
ãããŒã«ã«ã§æ§æãããgit
ãŠãŒã¶ãŒã«ãã©ãŒã«ããã¯ã§ããŸãã
ã奚ã-ããã¯ç§ãèãããã®ãªã®ã§ã倱æããããã¯ãundefined
è¿ãããšã確èªããããã«ãã¹ããå€æŽããŸããã
gradleãã©ã°ã€ã³ãšcocoapodsãã©ã°ã€ã³ã®äž¡æ¹ããããŒãžã§ã³ãèŠã€ãããªãå Žåã«ãšã©ãŒãã¹ããŒããããã§ãã gradleãã©ã°ã€ã³ã®ãã°ãäœæããŸãã-cocoapodsçšã«å¥ã®ãã°ãå¿ èŠã§ããïŒ
ãã åé¡ã«ããªãã§ãã ããã ãã£ããããŠãããŠããããšãïŒ
hooks.beforeRun
éã«å€ã®åæåããã¹ãããããã®è¯ãæ¹æ³ã«èŠåŽããŠããŸãã å
·äœçã«ã¯ã次ã®ã³ãŒãããããŸãããããã°äžã®å Žåã hooks.beforeRun
ã¿ããäžã«äœæè
æ
å ±ãæ£åžžã«æœåºããŸããããã¹ãã«å€±æããŸãã
test("should get author from pom.xml", async () => {
mockRead(`
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<developers>
<developer>
<name>Andrew Lisowski</name>
<email>[email protected]</email>
</developer>
</developers>
</project>
`);
await hooks.beforeRun.promise({} as any);
expect(await hooks.getAuthor.promise()).toStrictEqual(
expect.objectContaining({
email: "[email protected]",
name: "Andrew Lisowski",
})
);
});
äœãèµ·ãã£ãŠããã®ããšãããšã beforeRun
ããã¯ãå®è¡ãããåã«ããã¹ããgetAuthor
ããã¯ã«å°éããŠãããšããããšã§ãã ããããã¹ãããä»ã®ã³ãŒãïŒgradleãs3ïŒã調ã¹ãŸããããããŸããããŸããã
åºæ¬çã«ã beforeRun
ããã¯ã決å®è«çã«å®è¡ããæ¹æ³ãå¿
èŠã§ããããã®æ¹æ³ãç解ã§ããŸããã
ãã©ã³ããããã·ã¥ããŠãã§ãã¯ã¢ãŠãã§ããŸã
@hipstersmoothieããã«ãã©ã³ãããããŸãïŒ https ïŒ
ãªã¢ãŒãå±¥æŽãæ±æããããšãªãå®éã®ãããžã§ã¯ãã§ã³ãŒãããã¹ãã§ããããã«ãå€æŽãäžå€®ãªããžããªã«ããã·ã¥ããã³ãŒããã³ã¡ã³ãã¢ãŠãããŸããã
ããã§ç§ã«äžããããšãã§ããã©ããªå©ãã倧ãã«æè¬ãããŸã-ç§ã¯ãã³ãŒããå®è¡ããããšããæãªããã®æ¹æ³ã«é Œãã®ã§ã¯ãªããpom.xmlãã¡ã€ã«ãã©ãã ãããŸãå€æŽã§ãããããã§ãã¯ããããã«ãã¹ãã䜿çšã§ããããšãæãã§ããŸãå®éã®ãã¡ã€ã«ãå®éã®ãã¡ã€ã«ã確èªãã git reset --hard HEAD~1
ãå®è¡ããŠå€æŽãåãé€ããããããç¹°ãè¿ããŸããã
ãŸããIntelliJã§jestãã¹ããå®è¡ããããã«ãã«ãŒãpackage.json
ãšäºææ§ã®ãªãããŒã«ã«package.json
ããã€ãã®å€æŽãå ããå¿
èŠããããŸãã-ããã«ã€ããŠç§ã«äžããããšãã§ããã¬ã€ãã³ã¹ã¯ãããŸããïŒãããšããç®±ããåºããŠãããŸããããã¹ãã§ããããïŒ
å
·äœçã«ã¯ãMavenãã©ã°ã€ã³ãã£ã¬ã¯ããªã«ããã npm test
å®è¡ããŠããå Žåã "test": "jest --maxWorkers=2 --config ../../package.json"
ããããã¹ãŠã®ãã¹ããå®è¡ãããŸãã
ãããŠããšãã£ã¿ãŒããIntelliJ Test Runnerã䜿ãããšãããšã次ã®ããã«ãªããŸãã
â Test suite failed to run
SyntaxError: /home/rbellamy/Development/Terradatum/auto/plugins/maven/__tests__/maven.test.ts: Unexpected token, expected "," (15:24)
13 | }));
14 |
> 15 | const mockRead = (result: string) =>
| ^
16 | jest
17 | .spyOn(fs, "readFile")
18 | // @ts-ignore
at Parser._raise (../../node_modules/@babel/parser/src/parser/location.js:241:45)
at Parser._raise [as raiseWithData] (../../node_modules/@babel/parser/src/parser/location.js:236:17)
at Parser.raiseWithData [as raise] (../../node_modules/@babel/parser/src/parser/location.js:220:17)
at Parser.raise [as unexpected] (../../node_modules/@babel/parser/src/parser/util.js:149:16)
at Parser.unexpected [as expect] (../../node_modules/@babel/parser/src/parser/util.js:129:28)
at Parser.expect [as parseParenAndDistinguishExpression] (../../node_modules/@babel/parser/src/parser/expression.js:1293:14)
at Parser.parseParenAndDistinguishExpression [as parseExprAtom] (../../node_modules/@babel/parser/src/parser/expression.js:1029:21)
at Parser.parseExprAtom [as parseExprSubscripts] (../../node_modules/@babel/parser/src/parser/expression.js:539:23)
at Parser.parseExprSubscripts [as parseMaybeUnary] (../../node_modules/@babel/parser/src/parser/expression.js:519:21)
at Parser.parseMaybeUnary [as parseExprOps] (../../node_modules/@babel/parser/src/parser/expression.js:311:23)
jest.config.ts
ãã¡ã€ã«ãè¿œå ããããšã§ãIntelliJã®åé¡ã解決ã§ããŸãã
module.exports = {
clearMocks: true,
moduleFileExtensions: ['js', 'ts'],
testEnvironment: 'node',
testMatch: ['**/*.test.ts'],
testRunner: 'jest-circus/runner',
transform: {
'^.+\\.ts$': 'ts-jest'
},
verbose: true
}
次ã«ã jest-circus
ãã«ãŒããã¡ã€ã«ãŸãã¯Maven package.json
ãã¡ã€ã«ã«è¿œå ããŸãã
xml2js
ã¯ãXML => JSON => XMLå€æäžã«ãã¹ãŠã®XMLã³ã¡ã³ãããµã€ã¬ã³ãã«åé€ããããããžã§ããå®è¡ããªãããšã«æ°ã¥ããŸããã ç§ã¯ãããæ©èœãããããã«åªããŠããŸããããããŠããã¯æ¯ãæããããªãã®ã§ãã xml2js
å€æã移åãããšãã«ãXMLãå
ã®ããã«èŠãããšããä¿èšŒã¯ãããŸãããããã¯å€§ããªåé¡ã§ãã
1ã€ã®ãã©ã°ã€ã³ã ãã®ãã¹ããå®è¡ããã«ã¯ãã«ãŒãããå®è¡ããŸãã
yarn test plugins/maven
次ã«ãå®éã«å€æŽãå ããããšãªããè¡ããã¹ãŠã®å€æŽãŸãã¯äœæããã¢ãŒãã£ãã¡ã¯ããç°¡åã«è¡šç€ºã§ãããã©ãããšããçåãçããŸãã
ããã¯ããªã倧ããªåé¡ã®ããã«æããŸãã ãã®ãã¡ã€ã«ã®ç·šéãå¯èœã«ããJavaç°å¢ã§åºè·ãããæšæºCLIã¯ãããŸããïŒ
æ§æãã¡ã€ã«çšã®ããŒãµãŒãæããªããã©ã°ã€ã³ïŒäŸïŒrubyïŒã®å Žåã auto
ã¯äž»ã«æ£èŠè¡šçŸã䜿çšããŠãã¡ã€ã«ãæŽæ°ããŸãã
beforeRun
åé¡ãèŠãæ©äŒããããŸãããïŒ åé¿çã¯ãããŸãããæ¬åœã«ããããŒãªæããããŸã...
XMLã§æ£èŠè¡šçŸã䜿çšãããšããã¢ã€ãã¢ã¯æ¬åœã«å«ãã§ãããšã©ãŒãçºçãããããè匱ã§ãã ãã ããããŒãžã§ã³ãå€æŽããããã ãã«DOMParser
ãŸãã¯XMLSerializer
ã䜿çšããããšãããšãéæ¹ããªãè€éã«æããŸãããã®ãããæåã«xml2js
ã䜿çšããããšããŠããŸããã
ä»ãããèŠãŠïŒ
åé¡ã¯ããåæãã¿ãããå®è¡ããŠããŠããã®å éšã§éåæäœæ¥ãå®è¡ããŠããããšã§ãã
ãããå€ãã
auto.hooks.beforeRun.tap(this.name, async () => {
ããã«
auto.hooks.beforeRun.tapPromise(this.name, async () => {
ãããå®è¡åã®ããã¯ã¯çŸåšåæãããŠããŸãããããæ¬åœã®åé¡ã§ãã ããããªã£ãå Žåãããã¯äœãå€ãããªãã ããAsyncSeriesHook
ã®ä»£ããã«SyncHook
ã äœãèšã£ãŠããã®ãããããªãå Žåã¯ããã©ã³ãã«ã³ããããããã·ã¥ã§ããŸã
ããŠãã ãã...ããªããå¯çš¿è ã«ãããŠãã ããã
ã©ããïŒ
æŒãã ãã ãã¹ããå®è¡ããŸããããçŸåšå€±æããŠããã®ã¯2ã€ã ãã§ãã beforeRunããã¯ã¯æåŸ ã©ããã«æ©èœããŠããŸãã
@hipstersmoothie terradatum / autoãªããžããªãžã®ã³ãããã衚瀺ãããŸãããïŒ
ä»ç§ã¯å®éã«ããã·ã¥ããŸãã
ããã«ãããçŸåšåæã¿ããã䜿çšããŠãããã©ââã°ã€ã³ã«é倧ãªå€æŽãçºçããŸããïŒ
ãããã åæã¿ããã¯åãããã«æ©èœããã¯ãã§ãã ããã¯ãçŽæãã¿ããããæ©èœãè¿œå ããã ãã§ã
ç§ã¯ãè匱ã§ãšã©ãŒãçºçããããæ£èŠè¡šçŸã䜿çšããŠããã®äœæ¥ãæåãããŸããã ç§ã®æžå¿µã¯ã <version/>
èŠçŽ ãpom.xml
ãã¡ã€ã«ã®ã©ãã§ã䜿çšãããŠããããšã§ã-ã¢ãŒãã£ãã¡ã¯ãããŒãžã§ã³ãšäŸåé¢ä¿ãšãã©ã°ã€ã³ã®ããã«ã èšãæãããšãæ£èŠè¡šçŸã¯ãæ³å®å€ã®ããŒãžã§ã³ã誀ã£ãŠå€æŽããå¯èœæ§ãéåžžã«é«ããªããŸãã
ïŒxmldomãxmldom-tsãxml2jsãxml2jsonãªã©ãä»ããŠïŒXML DOMãæäœããããšãããšã壮倧ãªæ¯çã®æ³¥æ²Œã«é¥ã£ãŠããŸãã ç§ã¯æ±ºããŠèªåèªèº«ãtypescriptãjavascriptã®å°é家ã ãšã¯æã£ãŠããªãã®ã§ããããããããç§ãé¥ã£ãŠãããšããã§ãã
2ã€ã®ããšãç§ã®ãå°»ã蹎ã£ãŠããŸãïŒ
Document
ããŒãããxpathã䜿çšããŠã/ project / versionãããŒããšã/ project / parent / versionãããŒããéžæããŸãããããã®2ã€ã®åé¡ã®éã§ãç§ã¯ããããåèš12ã16æéè²»ãããŸããããæ¬åœã«ã€ã©ã€ã©ããŠããŸãã ç§ã¯ä»æãŸã§ïŒ1ãåããŠããã®ã§ãïŒ2ã¯æ¯èŒçåçŽãªã¯ãã ãšæããŸãããããã¯ããããå Žé¢ã§ç§ãšæŠã£ãŠããããã§ãã
maven-release-pluginãpom.xmlãã¡ã€ã«ã®æŽæ°ãåŠçãããšããéæ¹ããªãåçŽãªçç±ã§ãmaven-release-pluginã®äœ¿çšã«æ»ãåŸåããããŸãã
IntelliJã«ãããã°ã¢ãŒãã§Mavenãã¹ãïŒããã³Mavenãã¹ãã®ã¿ïŒãå®è¡ãããæ¹æ³ãããããŸããã ããŸãããããšãããã°ãããŸããããªãããšããããŸãã
ç³ãèš³ãããŸããããããã§ã¯ããŸã圹ã«ç«ã¡ãŸããã ç§ã¯VSCodeã䜿çšããŠããããã¹ãããããã°ããããšã¯ãã£ãã«ãããŸããã yarn test plugins/maven
ããŠã«ãŒãããå®è¡ã§ããŸããïŒ
pom.xmlãããã¥ã¡ã³ãã«ããŒãããxpathã䜿çšããŠã/ project / versionãããŒããšã/ project / parent / versionãããŒããéžæããŸãã
ããã¯è¯ãæ¹æ³ã®ããã§ãã ãããããŸããããªããããã¯è¯ãããã§ãã
maven-release-pluginãpom.xmlãã¡ã€ã«ã®æŽæ°ãåŠçãããšããéæ¹ããªãåçŽãªçç±ã§ãmaven-release-pluginã®äœ¿çšã«æ»ãåŸåããããŸãã
https://stackoverflow.com/questions/5726291/updating-version-numbers-of-modules-in-a-multi-module-maven-projectã®ãããªãã©ã°ã€ã³ããŒã¹ã®ãã®ã ããmavenã§å©çšã§ããŸããïŒ äœã¬ãã«ã®mvnããŒã¹ã®ãã®ãæé©ã§ãã
ãšããã§ãããã«å€ãã®æéãè²»ãããŠãããŠããããšãïŒ
ãã£ãŒãããã¯ãšãµããŒãã«æè¬ããŸãã æŽèšïŒã£ãœãïŒåã®ã³ã¡ã³ãã§ããããªããã
ããŒãžã§ã³ã«ã€ããŠã®çŽ æŽãããç¹-maven-plugin-ç§ã¯ä»¥åã«ããã䜿ã£ãããšããªãããããååšããããšãç¥ããŸããã§ããã ããã¯ç¢ºãã«ç§ã«ãšã£ãŠç©äºãç°¡åã«ããã§ããã...ããã¯maven-release-pluginãšèªåãã©ã°ã€ã³ãä»ããŠpom.xmlãã¡ã€ã«ã管çããããšããããšã®éã®å®å šãªåŠ¥åç¹ã§ãã
yarn test plugins/maven
ãåäœãããããšãã§ããŸãã ç§ã¯ãŸããåŸæ¥ã®console.log
ã§ã¯ãªãããããã¬ãŒã䜿çšããŠç©äºãæ€æ»ããã®ã倧奜ããªã®ã§ããããããããç§ãå¿
èŠä»¥äžã«èžçŒããåŒãèµ·ãããŠãããšããã§ã...
é·ãå°é£ãªæ
ã®åŸãç§ã¯ã»ãšãã©ç§ã¯ã©ã¡ããä¿®æ£ããå®å
šãªãœãªã¥ãŒã·ã§ã³ãèããäœãæã£ãŠããpom.xml
ãã¡ã€ã«ãçŽæ¥ãŸãã¯äœ¿çšversions-maven-plugin
ã»ããããŒãžã§ã³ã«ã
ããã€ãã®æ³šæç¹ããããŸãã pom.xml
ãå€æŽããããã«äœ¿çšãããã³ãŒãã¯ãDOMã§æ©èœããŠããã次ã®ãããªçµæã«ãªããŸãã
tsconfig.json
åŠçã«ãã°ãããã "dom"
libã"compilerOptions"
"es2017"
åã«ããå¿
èŠããããŸããäœåïŒ
"compilerOptions": [ "dom", "es2017" ]
åäœããŸããïŒ
"compilerOptions": [ "es2017", "dom" ]
ãä¿®æ£ãããªããšã次ã®ããã«ãªããŸãã
$ tsc -b tsconfig.dev.json
node_modules/@types/jsdom/index.d.ts:28:40 - error TS2304: Cannot find name 'DocumentFragment'.
28 static fragment(html: string): DocumentFragment;
~~~~~~~~~~~~~~~~
node_modules/@types/jsdom/index.d.ts:45:28 - error TS2304: Cannot find name 'Node'.
45 nodeLocation(node: Node): ElementLocation | null;
~~~~
node_modules/@types/jsdom/index.d.ts:188:19 - error TS2304: Cannot find name 'HTMLScriptElement'.
188 element?: HTMLScriptElement | HTMLLinkElement | HTMLIFrameElement | HTMLImageElement;
~~~~~~~~~~~~~~~~~
node_modules/@types/jsdom/index.d.ts:188:39 - error TS2304: Cannot find name 'HTMLLinkElement'.
188 element?: HTMLScriptElement | HTMLLinkElement | HTMLIFrameElement | HTMLImageElement;
~~~~~~~~~~~~~~~
<snip - numerous other errors>
jest
ãã¹ããå¿
èŠã§ãtestEnvironment: 'jsdom'
ãšã¯å¯Ÿç
§çã«ã 'node'
ããä¿®æ£ãããªããšã次ã®ããã«ãªããŸãã
$ jest --runInBand plugins/maven
FAIL plugins/maven/__tests__/maven.test.ts
maven
updatePomVersion
â should replace the previousVersion with the newVersion (39ms)
â maven ⺠updatePomVersion ⺠should replace the previousVersion with the newVersion
ReferenceError: XPathEvaluator is not defined
51 | ) => {
52 | const pomDom = new jsdom.JSDOM(content, {contentType: "text/xml"}).window.document;
> 53 | const evaluator = new XPathEvaluator();
| ^
54 | const resolver = evaluator.createNSResolver(pomDom.documentElement);
55 | const expression = evaluator.createExpression("/project/version", resolver);
56 | const versionNode = expression.evaluate(pomDom.documentElement, XPathResult.FIRST_ORDERED_NODE_TYPE);
at Object.exports.updatePomVersion (plugins/maven/src/index.ts:53:21)
at Object.test (plugins/maven/__tests__/maven.test.ts:53:26)
äžèšã®ãä¿®æ£ãã¯ããã©ã°ã€ã³ã®ã«ãŒãæ§æã§èšå®ãããå Žåã¯æ©èœããŸãããããšãã°ã plugins/maven/tsconfig.json
ãplugins/maven/package.json
jest
æ§æãæ©èœããŸããã ã«ãŒãæ§æãã¡ã€ã«ã«å€æŽãå ããŠãããã¹ããæ©èœã«æªåœ±é¿ãäžããããã«ã¯èŠããŸããã§ããã
ããã¯ããªãã®ãã©ã³ãã«ãããŸããïŒ ç§ã¯ãããããããä¿®æ£ããããšãã§ããŸã
ãŸã ...ããã·ã¥ããåã«ããã¹ãŠã®ãã¹ãïŒããã³æ°ãããã¹ãïŒã«åæ ŒããŠããããšã確èªããŠããŸãã ã¬ãã¥ãŒã®æºåãã§ããããpingãéä¿¡ããŸãã
ãã¹ã¿ãŒããã©ã³ãã«ãªããŒã¹ãããšãããããã€ãã®ãã«ããšã©ãŒãçºçããŸããã
æåã«ãããŒãžã®ç«¶åã®ããã«yarn.lock
ãã¡ã€ã«ãäžæãããããããã¡ã€ã«ãåé€ããŠåæ§ç¯ããå¿
èŠããããŸããã
error Incorrect integrity when fetching from the cache for "babel-plugin-jest-hoist". Cache has "sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g== sha1-EpyAulx/x1uvOkW5Pi43LVfKJnc=" and remote has "sha512-+AuoehOrjt9irZL7DOt2+4ZaTM6dlu1s5TTS46JBa0/qem4dy7VNW3tMb96qeEqcIh20LD73TVNtmVEeymTG7w==". Run `yarn cache clean` to fix the problem
ãããå®è¡ãããšã @octokit/graphql
ãšã©ãŒãçºçããŸãã
$ tsc -b tsconfig.dev.json
packages/core/src/auto.ts:2018:13 - error TS2571: Object is of type 'unknown'.
2018 if (result?.[`hash_${commit}`]) {
~~~~~~
packages/core/src/auto.ts:2019:27 - error TS2571: Object is of type 'unknown'.
2019 const number = (result[`hash_${commit}`] as ISearchResult).edges[0]
~~~~~~
packages/core/src/release.ts:286:52 - error TS2769: No overload matches this call.
Overload 1 of 2, '(o: ArrayLike<unknown> | { [s: string]: unknown; }): [string, unknown][]', gave the following error.
Argument of type 'unknown' is not assignable to parameter of type 'ArrayLike<unknown> | { [s: string]: unknown; }'.
Type 'unknown' is not assignable to type '{ [s: string]: unknown; }'.
Overload 2 of 2, '(o: {}): [string, any][]', gave the following error.
Argument of type 'unknown' is not assignable to parameter of type '{}'.
286 (acc, result) => [...acc, ...(Object.entries(result) as QueryEntry[])],
~~~~~~
packages/core/src/__tests__/git.test.ts:209:12 - error TS2571: Object is of type 'unknown'.
209 expect(result!.data).not.toBeUndefined();
~~~~~~~
Found 4 errors.
error Command failed with exit code 2.
ãã®ããã®PRãäœæã§ããããšãéåžžã«æåŸ ããŠããŸãããããŸã æºåãã§ããŠããªãã®ã§ã¯ãªãããšå¿é ããŠããŸãã
ããŠãç§ã¯ç§ãè¡ãããã«å¿
èŠãªãã®ãåãã-ç§ã¯ã¡ããã©ãã§ãã¯ã¢ãŠãyarn.lock
ãããã¡ã€ã«ãmaster
ããã®åŸãåå®è¡ããŸããyarn clean && yarn install && yarn build && yarn test plugins/maven
ãšç§ã¯è¯ãã®ã ãšæããŸã-è¡ãã
çŽ æŽãããïŒ ä»æ¥ã¯ããã確èªããŸãã ç³ãèš³ãããŸããããé±æ«ã«è¿ä¿¡ããŸããã§ããã
ïŒrocketïŒåé¡ã¯v9.40.0
ãªãªãŒã¹ãããŸããïŒrocketïŒ