Compare commits
	
		
			46 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 838f2d6959 | |||
| 0d42e5f6eb | |||
| f96de8cdc3 | |||
| 965833916f | |||
| 81ec1391e3 | |||
| bbbca44640 | |||
| 7ba7dc54a1 | |||
| 4f98eeec2a | |||
| 419a6b9e5f | |||
| 9c040c34f5 | |||
| 50d3f2d795 | |||
| 305856b9e1 | |||
| 3683743f3c | |||
| 41237e0e5f | |||
| bce84a0e74 | |||
| 79bed919d8 | |||
| 4b202ce00e | |||
| 16ca787314 | |||
| 3a9b6f658a | |||
| 5c5dbf303f | |||
| 4c07131e51 | |||
| ba039469ff | |||
| 49f2498ecd | |||
| 1060060366 | |||
| 0fa3a579f7 | |||
| 0e4556d59e | |||
| e2e7967fba | |||
| 45b8d67abf | |||
| 0a69aa5d62 | |||
| dfbab1a1df | |||
| e58f009a24 | |||
| 2afd9cddc5 | |||
| d79c5366ef | |||
| 8e4f7ad244 | |||
| 39de3a1601 | |||
| cb3d2964d1 | |||
| 6b5390cef8 | |||
| 2736b85de3 | |||
| 82d7778f59 | |||
| 8c99cc0491 | |||
| 955e3d0dbe | |||
| 702ae8bed8 | |||
| b6f0723b75 | |||
| 8a2fb30e59 | |||
| 95b4030120 | |||
| 5c77cfbdc2 | 
							
								
								
									
										66
									
								
								.gitea/workflows/default_nottags.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								.gitea/workflows/default_nottags.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | |||||||
|  | name: Default (not tags) | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     tags-ignore: | ||||||
|  |       - '**' | ||||||
|  |  | ||||||
|  | env: | ||||||
|  |   IMAGE: registry.gitlab.com/hosttoday/ht-docker-node:npmci | ||||||
|  |   NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}} | ||||||
|  |   NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}} | ||||||
|  |   NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}} | ||||||
|  |   NPMCI_URL_CLOUDLY: ${{secrets.NPMCI_URL_CLOUDLY}} | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |  | ||||||
|  |   security: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     continue-on-error: true | ||||||
|  |     container: | ||||||
|  |       image: ${{ env.IMAGE }} | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |     - uses: actions/checkout@v3 | ||||||
|  |  | ||||||
|  |     - name: Install pnpm and npmci | ||||||
|  |       run: | | ||||||
|  |         pnpm install -g pnpm | ||||||
|  |         pnpm install -g @shipzone/npmci | ||||||
|  |  | ||||||
|  |     - name: Run npm prepare | ||||||
|  |       run: npmci npm prepare | ||||||
|  |  | ||||||
|  |     - name: Audit production dependencies | ||||||
|  |       run: | | ||||||
|  |         npmci command npm config set registry https://registry.npmjs.org | ||||||
|  |         npmci command pnpm audit --audit-level=high --prod | ||||||
|  |       continue-on-error: true | ||||||
|  |  | ||||||
|  |     - name: Audit development dependencies | ||||||
|  |       run: | | ||||||
|  |         npmci command npm config set registry https://registry.npmjs.org | ||||||
|  |         npmci command pnpm audit --audit-level=high --dev | ||||||
|  |       continue-on-error: true | ||||||
|  |  | ||||||
|  |   test: | ||||||
|  |     if: ${{ always() }} | ||||||
|  |     needs: security | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     container: | ||||||
|  |       image: ${{ env.IMAGE }} | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |     - uses: actions/checkout@v3 | ||||||
|  |  | ||||||
|  |     - name: Test stable | ||||||
|  |       run: | | ||||||
|  |         npmci node install stable | ||||||
|  |         npmci npm install | ||||||
|  |         npmci npm test | ||||||
|  |  | ||||||
|  |     - name: Test build | ||||||
|  |       run: | | ||||||
|  |         npmci node install stable | ||||||
|  |         npmci npm install | ||||||
|  |         npmci npm build | ||||||
							
								
								
									
										108
									
								
								.gitea/workflows/default_tags.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								.gitea/workflows/default_tags.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,108 @@ | |||||||
|  | name: Default (tags) | ||||||
|  |  | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     tags: | ||||||
|  |       - '*' | ||||||
|  |  | ||||||
|  | env: | ||||||
|  |   IMAGE: registry.gitlab.com/hosttoday/ht-docker-node:npmci | ||||||
|  |   NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}} | ||||||
|  |   NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}} | ||||||
|  |   NPMCI_LOGIN_DOCKER_GITEA: ${{secrets.NPMCI_DOCKER_REGISTRYURL_DEFAULT}}|${{ gitea.repository_owner }}|${{ secrets.GITEA_TOKEN }} | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |  | ||||||
|  |   security: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     continue-on-error: true | ||||||
|  |     container: | ||||||
|  |       image: ${{ env.IMAGE }} | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |     - uses: actions/checkout@v3 | ||||||
|  |  | ||||||
|  |     - name: Install pnpm and npmci | ||||||
|  |       run: | | ||||||
|  |         pnpm install -g pnpm | ||||||
|  |         pnpm install -g @shipzone/npmci | ||||||
|  |  | ||||||
|  |     - name: Run npm prepare | ||||||
|  |       run: npmci npm prepare | ||||||
|  |  | ||||||
|  |     - name: Audit production dependencies | ||||||
|  |       run: | | ||||||
|  |         npmci command npm config set registry https://registry.npmjs.org | ||||||
|  |         npmci command pnpm audit --audit-level=high --prod | ||||||
|  |       continue-on-error: true | ||||||
|  |  | ||||||
|  |     - name: Audit development dependencies | ||||||
|  |       run: | | ||||||
|  |         npmci command npm config set registry https://registry.npmjs.org | ||||||
|  |         npmci command pnpm audit --audit-level=high --dev | ||||||
|  |       continue-on-error: true | ||||||
|  |  | ||||||
|  |   test: | ||||||
|  |     if: ${{ always() }} | ||||||
|  |     needs: security | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     container: | ||||||
|  |       image: ${{ env.IMAGE }} | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |     - uses: actions/checkout@v3 | ||||||
|  |  | ||||||
|  |     - name: Test stable | ||||||
|  |       run: | | ||||||
|  |         npmci node install stable | ||||||
|  |         npmci npm install | ||||||
|  |         npmci npm test | ||||||
|  |  | ||||||
|  |     - name: Test build | ||||||
|  |       run: | | ||||||
|  |         npmci node install stable | ||||||
|  |         npmci npm install | ||||||
|  |         npmci npm build | ||||||
|  |  | ||||||
|  |   release: | ||||||
|  |     needs: test | ||||||
|  |     if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     container: | ||||||
|  |       image: ${{ env.IMAGE }} | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |     - uses: actions/checkout@v3 | ||||||
|  |  | ||||||
|  |     - name: Release | ||||||
|  |       run: | | ||||||
|  |         npmci node install stable | ||||||
|  |         npmci npm publish | ||||||
|  |  | ||||||
|  |   metadata: | ||||||
|  |     needs: test | ||||||
|  |     if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     container: | ||||||
|  |       image: ${{ env.IMAGE }} | ||||||
|  |     continue-on-error: true | ||||||
|  |  | ||||||
|  |     steps: | ||||||
|  |     - uses: actions/checkout@v3 | ||||||
|  |  | ||||||
|  |     - name: Code quality | ||||||
|  |       run: | | ||||||
|  |         npmci command npm install -g typescript | ||||||
|  |         npmci npm prepare | ||||||
|  |         npmci npm install | ||||||
|  |  | ||||||
|  |     - name: Trigger | ||||||
|  |       run: npmci trigger | ||||||
|  |  | ||||||
|  |     - name: Build docs and upload artifacts | ||||||
|  |       run: | | ||||||
|  |         npmci node install stable | ||||||
|  |         npmci npm install | ||||||
|  |         pnpm install -g @gitzone/tsdoc | ||||||
|  |         npmci command tsdoc | ||||||
|  |       continue-on-error: true | ||||||
							
								
								
									
										128
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							
							
						
						
									
										128
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							| @@ -1,128 +0,0 @@ | |||||||
| # gitzone ci_default |  | ||||||
| image: registry.gitlab.com/hosttoday/ht-docker-node:npmci |  | ||||||
|  |  | ||||||
| cache: |  | ||||||
|   paths: |  | ||||||
|     - .npmci_cache/ |  | ||||||
|   key: '$CI_BUILD_STAGE' |  | ||||||
|  |  | ||||||
| stages: |  | ||||||
|   - security |  | ||||||
|   - test |  | ||||||
|   - release |  | ||||||
|   - metadata |  | ||||||
|  |  | ||||||
| before_script: |  | ||||||
|   - pnpm install -g pnpm |  | ||||||
|   - pnpm install -g @shipzone/npmci |  | ||||||
|   - npmci npm prepare |  | ||||||
|  |  | ||||||
| # ==================== |  | ||||||
| # security stage |  | ||||||
| # ==================== |  | ||||||
| # ==================== |  | ||||||
| # security stage |  | ||||||
| # ==================== |  | ||||||
| auditProductionDependencies: |  | ||||||
|   image: registry.gitlab.com/hosttoday/ht-docker-node:npmci |  | ||||||
|   stage: security |  | ||||||
|   script: |  | ||||||
|      - npmci command npm config set registry https://registry.npmjs.org |  | ||||||
|      - npmci command pnpm audit --audit-level=high --prod |  | ||||||
|   tags: |  | ||||||
|     - lossless |  | ||||||
|     - docker |  | ||||||
|   allow_failure: true |  | ||||||
|  |  | ||||||
| auditDevDependencies: |  | ||||||
|   image: registry.gitlab.com/hosttoday/ht-docker-node:npmci |  | ||||||
|   stage: security |  | ||||||
|   script: |  | ||||||
|     - npmci command npm config set registry https://registry.npmjs.org |  | ||||||
|     - npmci command pnpm audit --audit-level=high --dev |  | ||||||
|   tags: |  | ||||||
|     - lossless |  | ||||||
|     - docker |  | ||||||
|   allow_failure: true |  | ||||||
|  |  | ||||||
| # ==================== |  | ||||||
| # test stage |  | ||||||
| # ==================== |  | ||||||
|  |  | ||||||
| testStable: |  | ||||||
|   stage: test |  | ||||||
|   script: |  | ||||||
|     - npmci node install stable |  | ||||||
|     - npmci npm install |  | ||||||
|     - npmci npm test |  | ||||||
|   coverage: /\d+.?\d+?\%\s*coverage/ |  | ||||||
|   tags: |  | ||||||
|     - docker |  | ||||||
|  |  | ||||||
| testBuild: |  | ||||||
|   stage: test |  | ||||||
|   script: |  | ||||||
|     - npmci node install stable |  | ||||||
|     - npmci npm install |  | ||||||
|     - npmci npm build |  | ||||||
|   coverage: /\d+.?\d+?\%\s*coverage/ |  | ||||||
|   tags: |  | ||||||
|     - docker |  | ||||||
|  |  | ||||||
| release: |  | ||||||
|   stage: release |  | ||||||
|   script: |  | ||||||
|     - npmci node install stable |  | ||||||
|     - npmci npm publish |  | ||||||
|   only: |  | ||||||
|     - tags |  | ||||||
|   tags: |  | ||||||
|     - lossless |  | ||||||
|     - docker |  | ||||||
|     - notpriv |  | ||||||
|  |  | ||||||
| # ==================== |  | ||||||
| # metadata stage |  | ||||||
| # ==================== |  | ||||||
| codequality: |  | ||||||
|   stage: metadata |  | ||||||
|   allow_failure: true |  | ||||||
|   only: |  | ||||||
|     - tags |  | ||||||
|   script: |  | ||||||
|     - npmci command npm install -g typescript |  | ||||||
|     - npmci npm prepare |  | ||||||
|     - npmci npm install |  | ||||||
|   tags: |  | ||||||
|     - lossless |  | ||||||
|     - docker |  | ||||||
|     - priv |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   stage: metadata |  | ||||||
|   script: |  | ||||||
|     - npmci trigger |  | ||||||
|   only: |  | ||||||
|     - tags |  | ||||||
|   tags: |  | ||||||
|     - lossless |  | ||||||
|     - docker |  | ||||||
|     - notpriv |  | ||||||
|  |  | ||||||
| pages: |  | ||||||
|   stage: metadata |  | ||||||
|   script: |  | ||||||
|     - npmci node install stable |  | ||||||
|     - npmci npm install |  | ||||||
|     - npmci command npm run buildDocs |  | ||||||
|   tags: |  | ||||||
|     - lossless |  | ||||||
|     - docker |  | ||||||
|     - notpriv |  | ||||||
|   only: |  | ||||||
|     - tags |  | ||||||
|   artifacts: |  | ||||||
|     expire_in: 1 week |  | ||||||
|     paths: |  | ||||||
|       - public |  | ||||||
|   allow_failure: true |  | ||||||
| @@ -12,10 +12,10 @@ | |||||||
|     "projectType": "npm", |     "projectType": "npm", | ||||||
|     "module": { |     "module": { | ||||||
|       "githost": "gitlab.com", |       "githost": "gitlab.com", | ||||||
|       "gitscope": "shipzone", |       "gitscope": "ship.zone", | ||||||
|       "gitrepo": "npmci", |       "gitrepo": "npmci", | ||||||
|       "description": "node and docker in gitlab ci on steroids", |       "description": "node and docker in gitlab ci on steroids", | ||||||
|       "npmPackagename": "@shipzone/npmci", |       "npmPackagename": "@ship.zone/npmci", | ||||||
|       "license": "MIT" |       "license": "MIT" | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   | |||||||
							
								
								
									
										60
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								package.json
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@shipzone/npmci", |   "name": "@ship.zone/npmci", | ||||||
|   "version": "4.1.4", |   "version": "4.1.27", | ||||||
|   "private": false, |   "private": false, | ||||||
|   "description": "node and docker in gitlab ci on steroids", |   "description": "node and docker in gitlab ci on steroids", | ||||||
|   "main": "dist_ts/index.js", |   "main": "dist_ts/index.js", | ||||||
| @@ -26,37 +26,37 @@ | |||||||
|   }, |   }, | ||||||
|   "homepage": "https://gitlab.com/gitzone/npmci#README", |   "homepage": "https://gitlab.com/gitzone/npmci#README", | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@gitzone/tsbuild": "^2.1.65", |     "@gitzone/tsbuild": "^2.1.66", | ||||||
|     "@gitzone/tsrun": "^1.2.37", |     "@gitzone/tsrun": "^1.2.44", | ||||||
|     "@gitzone/tstest": "^1.0.73", |     "@gitzone/tstest": "^1.0.77", | ||||||
|     "@pushrocks/tapbundle": "^5.0.4", |     "@push.rocks/tapbundle": "^5.0.15", | ||||||
|     "@types/node": "^18.8.3" |     "@types/node": "^20.5.4" | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@apiglobal/typedrequest": "^2.0.10", |     "@api.global/typedrequest": "^3.0.1", | ||||||
|     "@pushrocks/lik": "^6.0.0", |     "@push.rocks/lik": "^6.0.5", | ||||||
|     "@pushrocks/npmextra": "^3.0.9", |     "@push.rocks/npmextra": "^4.0.0", | ||||||
|     "@pushrocks/projectinfo": "^5.0.1", |     "@push.rocks/projectinfo": "^5.0.2", | ||||||
|     "@pushrocks/qenv": "^5.0.2", |     "@push.rocks/qenv": "^6.0.2", | ||||||
|     "@pushrocks/smartanalytics": "^2.0.15", |     "@push.rocks/smartanalytics": "^2.0.15", | ||||||
|     "@pushrocks/smartcli": "^4.0.6", |     "@push.rocks/smartcli": "^4.0.8", | ||||||
|     "@pushrocks/smartdelay": "^2.0.13", |     "@push.rocks/smartdelay": "^3.0.5", | ||||||
|     "@pushrocks/smartenv": "^5.0.3", |     "@push.rocks/smartenv": "^5.0.5", | ||||||
|     "@pushrocks/smartfile": "^10.0.5", |     "@push.rocks/smartfile": "^10.0.30", | ||||||
|     "@pushrocks/smartgit": "^3.0.0", |     "@push.rocks/smartgit": "^3.0.1", | ||||||
|     "@pushrocks/smartlog": "^3.0.1", |     "@push.rocks/smartlog": "^3.0.3", | ||||||
|     "@pushrocks/smartlog-destination-local": "^8.0.8", |     "@push.rocks/smartlog-destination-local": "^9.0.0", | ||||||
|     "@pushrocks/smartparam": "^1.1.6", |     "@push.rocks/smartobject": "^1.0.12", | ||||||
|     "@pushrocks/smartpath": "^5.0.5", |     "@push.rocks/smartpath": "^5.0.11", | ||||||
|     "@pushrocks/smartpromise": "^3.1.7", |     "@push.rocks/smartpromise": "^4.0.2", | ||||||
|     "@pushrocks/smartrequest": "^2.0.11", |     "@push.rocks/smartrequest": "^2.0.18", | ||||||
|     "@pushrocks/smartshell": "^2.0.30", |     "@push.rocks/smartshell": "^3.0.3", | ||||||
|     "@pushrocks/smartsocket": "^2.0.7", |     "@push.rocks/smartsocket": "^2.0.22", | ||||||
|     "@pushrocks/smartssh": "^2.0.0", |     "@push.rocks/smartssh": "^2.0.1", | ||||||
|     "@pushrocks/smartstring": "^4.0.5", |     "@push.rocks/smartstring": "^4.0.8", | ||||||
|     "@servezone/interfaces": "^1.0.3", |     "@servezone/interfaces": "^1.0.3", | ||||||
|     "@tsclass/tsclass": "^4.0.21", |     "@tsclass/tsclass": "^4.0.42", | ||||||
|     "@types/through2": "^2.0.36", |     "@types/through2": "^2.0.38", | ||||||
|     "through2": "^4.0.2" |     "through2": "^4.0.2" | ||||||
|   }, |   }, | ||||||
|   "files": [ |   "files": [ | ||||||
|   | |||||||
							
								
								
									
										3923
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										3923
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,5 +1,5 @@ | |||||||
| process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; | process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; | ||||||
| import { tap, expect } from '@pushrocks/tapbundle'; | import { tap, expect } from '@push.rocks/tapbundle'; | ||||||
|  |  | ||||||
| import * as cloudlyConnectorMod from '../ts/connector.cloudly/cloudlyconnector.js'; | import * as cloudlyConnectorMod from '../ts/connector.cloudly/cloudlyconnector.js'; | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								test/test.ts
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								test/test.ts
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| import { tap, expect } from '@pushrocks/tapbundle'; | import { tap, expect } from '@push.rocks/tapbundle'; | ||||||
| import * as path from 'path'; | import * as path from 'path'; | ||||||
| import * as smartpath from '@pushrocks/smartpath'; | import * as smartpath from '@push.rocks/smartpath'; | ||||||
|  |  | ||||||
| process.env.NPMTS_TEST = 'true'; | process.env.NPMTS_TEST = 'true'; | ||||||
| process.env.NPMCI_URL_CLOUDLY = 'localhost'; | process.env.NPMCI_URL_CLOUDLY = 'localhost'; | ||||||
| @@ -21,6 +21,8 @@ process.cwd = () => { | |||||||
|  |  | ||||||
| let npmci: typeof import('../ts/index.js'); | let npmci: typeof import('../ts/index.js'); | ||||||
|  |  | ||||||
|  | type TNpmciTypes = typeof import('../ts/index.js'); | ||||||
|  |  | ||||||
| tap.preTask('should import npmci', async () => { | tap.preTask('should import npmci', async () => { | ||||||
|   npmci = await import('../ts/index.js'); |   npmci = await import('../ts/index.js'); | ||||||
| }); | }); | ||||||
| @@ -35,6 +37,8 @@ let sortableArray: npmci.Dockerfile[]; | |||||||
|  |  | ||||||
| tap.test('should return valid Dockerfiles', async () => { | tap.test('should return valid Dockerfiles', async () => { | ||||||
|   const npmciInstance = new npmci.Npmci(); |   const npmciInstance = new npmci.Npmci(); | ||||||
|  |   await npmciInstance.start(); | ||||||
|  |   await npmciInstance.start(); | ||||||
|   dockerfile1 = new npmci.Dockerfile(npmciInstance.dockerManager, { |   dockerfile1 = new npmci.Dockerfile(npmciInstance.dockerManager, { | ||||||
|     filePath: './Dockerfile', |     filePath: './Dockerfile', | ||||||
|     read: true, |     read: true, | ||||||
| @@ -49,6 +53,7 @@ tap.test('should return valid Dockerfiles', async () => { | |||||||
|  |  | ||||||
| tap.test('should read a directory of Dockerfiles', async () => { | tap.test('should read a directory of Dockerfiles', async () => { | ||||||
|   const npmciInstance = new npmci.Npmci(); |   const npmciInstance = new npmci.Npmci(); | ||||||
|  |   await npmciInstance.start(); | ||||||
|   return npmci.Dockerfile.readDockerfiles(npmciInstance.dockerManager).then( |   return npmci.Dockerfile.readDockerfiles(npmciInstance.dockerManager).then( | ||||||
|     async (readDockerfilesArrayArg: npmci.Dockerfile[]) => { |     async (readDockerfilesArrayArg: npmci.Dockerfile[]) => { | ||||||
|       sortableArray = readDockerfilesArrayArg; |       sortableArray = readDockerfilesArrayArg; | ||||||
| @@ -67,6 +72,7 @@ tap.test('should sort an array of Dockerfiles', async () => { | |||||||
|  |  | ||||||
| tap.test('should build all Dockerfiles', async () => { | tap.test('should build all Dockerfiles', async () => { | ||||||
|   const npmciInstance = new npmci.Npmci(); |   const npmciInstance = new npmci.Npmci(); | ||||||
|  |   await npmciInstance.start(); | ||||||
|   return npmciInstance.dockerManager.handleCli({ |   return npmciInstance.dockerManager.handleCli({ | ||||||
|     _: ['docker', 'build'], |     _: ['docker', 'build'], | ||||||
|   }); |   }); | ||||||
| @@ -74,6 +80,7 @@ tap.test('should build all Dockerfiles', async () => { | |||||||
|  |  | ||||||
| tap.test('should test all Dockerfiles', async () => { | tap.test('should test all Dockerfiles', async () => { | ||||||
|   const npmciInstance = new npmci.Npmci(); |   const npmciInstance = new npmci.Npmci(); | ||||||
|  |   await npmciInstance.start(); | ||||||
|   return npmciInstance.dockerManager.handleCli({ |   return npmciInstance.dockerManager.handleCli({ | ||||||
|     _: ['docker', 'test'], |     _: ['docker', 'test'], | ||||||
|   }); |   }); | ||||||
| @@ -81,6 +88,7 @@ tap.test('should test all Dockerfiles', async () => { | |||||||
|  |  | ||||||
| tap.test('should test dockerfiles', async () => { | tap.test('should test dockerfiles', async () => { | ||||||
|   const npmciInstance = new npmci.Npmci(); |   const npmciInstance = new npmci.Npmci(); | ||||||
|  |   await npmciInstance.start(); | ||||||
|   return npmciInstance.dockerManager.handleCli({ |   return npmciInstance.dockerManager.handleCli({ | ||||||
|     _: ['docker', 'test'], |     _: ['docker', 'test'], | ||||||
|   }); |   }); | ||||||
| @@ -88,6 +96,7 @@ tap.test('should test dockerfiles', async () => { | |||||||
|  |  | ||||||
| tap.test('should login docker daemon', async () => { | tap.test('should login docker daemon', async () => { | ||||||
|   const npmciInstance = new npmci.Npmci(); |   const npmciInstance = new npmci.Npmci(); | ||||||
|  |   await npmciInstance.start(); | ||||||
|   return npmciInstance.dockerManager.handleCli({ |   return npmciInstance.dockerManager.handleCli({ | ||||||
|     _: ['docker', 'login'], |     _: ['docker', 'login'], | ||||||
|   }); |   }); | ||||||
| @@ -108,6 +117,7 @@ tap.test('should prepare SSH keys', async () => { | |||||||
| // ==== | // ==== | ||||||
| tap.test('should install a certain version of node', async () => { | tap.test('should install a certain version of node', async () => { | ||||||
|   const npmciInstance = new npmci.Npmci(); |   const npmciInstance = new npmci.Npmci(); | ||||||
|  |   await npmciInstance.start(); | ||||||
|   await npmciInstance.nodejsManager.handleCli({ |   await npmciInstance.nodejsManager.handleCli({ | ||||||
|     _: ['node', 'install', 'stable'], |     _: ['node', 'install', 'stable'], | ||||||
|   }); |   }); | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
|  * autocreated commitinfo by @pushrocks/commitinfo |  * autocreated commitinfo by @pushrocks/commitinfo | ||||||
|  */ |  */ | ||||||
| export const commitinfo = { | export const commitinfo = { | ||||||
|   name: '@shipzone/npmci', |   name: '@ship.zone/npmci', | ||||||
|   version: '4.1.4', |   version: '4.1.27', | ||||||
|   description: 'node and docker in gitlab ci on steroids' |   description: 'node and docker in gitlab ci on steroids' | ||||||
| } | } | ||||||
|   | |||||||
| @@ -6,5 +6,5 @@ export const npmciInstance = new Npmci(); | |||||||
| export { Dockerfile, Npmci }; | export { Dockerfile, Npmci }; | ||||||
|  |  | ||||||
| export const runCli = async () => { | export const runCli = async () => { | ||||||
|   npmciInstance.start(); |   await npmciInstance.start(); | ||||||
| }; | }; | ||||||
|   | |||||||
							
								
								
									
										67
									
								
								ts/manager.cloudron/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								ts/manager.cloudron/index.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | |||||||
|  | import { logger } from '../npmci.logging.js'; | ||||||
|  | import * as plugins from './mod.plugins.js'; | ||||||
|  | import * as paths from '../npmci.paths.js'; | ||||||
|  | import { bash } from '../npmci.bash.js'; | ||||||
|  | import { Npmci } from '../npmci.classes.npmci.js'; | ||||||
|  |  | ||||||
|  | export class NpmciCloudronManager { | ||||||
|  |   public npmciRef: Npmci; | ||||||
|  |  | ||||||
|  |   constructor(npmciArg: Npmci) { | ||||||
|  |     this.npmciRef = npmciArg; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * handle cli input | ||||||
|  |    * @param argvArg | ||||||
|  |    */ | ||||||
|  |   public handleCli = async (argvArg: any) => { | ||||||
|  |     if (argvArg._.length >= 2) { | ||||||
|  |       const action: string = argvArg._[1]; | ||||||
|  |       switch (action) { | ||||||
|  |         case 'deploy': | ||||||
|  |           await this.deploy(); | ||||||
|  |           break; | ||||||
|  |         default: | ||||||
|  |           logger.log('error', `>>npmci cloudron ...<< action >>${action}<< not supported`); | ||||||
|  |       } | ||||||
|  |     } else { | ||||||
|  |       logger.log( | ||||||
|  |         'info', | ||||||
|  |         `>>npmci cloudron ...<< cli arguments invalid... Please read the documentation.` | ||||||
|  |       ); | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * Replaces the version string in CloudronManifest file | ||||||
|  |    * @param versionArg | ||||||
|  |    */ | ||||||
|  |   public deploy = async () => { | ||||||
|  |     logger.log('info', 'now deploying to cloudron...'); | ||||||
|  |     logger.log('info', 'installing cloudron cli...'); | ||||||
|  |     await bash(`pnpm install -g cloudron`); | ||||||
|  |     logger.log('ok', 'cloudron cli installed'); | ||||||
|  |  | ||||||
|  |     // lets set the version in the CloudronManifest file | ||||||
|  |     await this.prepareCloudronManifest(this.npmciRef.npmciConfig.getConfig().projectInfo.npm.version); | ||||||
|  |     logger.log('ok', 'CloudronManifest prepared'); | ||||||
|  |  | ||||||
|  |     // lets figure out the docker image tag | ||||||
|  |     const dockerImageTag = await this.npmciRef.npmciConfig.kvStorage.readKey('latestPushedDockerTag'); | ||||||
|  |     const appName = this.npmciRef.npmciConfig.getConfig().cloudronAppName; | ||||||
|  |      | ||||||
|  |     const cloudronEnvVar = process.env.NPMCI_LOGIN_CLOUDRON; | ||||||
|  |     const cloudronServer = cloudronEnvVar.split('|')[0]; | ||||||
|  |     const cloudronToken = cloudronEnvVar.split('|')[1]; | ||||||
|  |     await bash(`cloudron update --server ${cloudronServer} --token ${cloudronToken} --image ${dockerImageTag} --app ${appName}`); | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   private prepareCloudronManifest = async (versionArg: string) => { | ||||||
|  |     const manifestPath = plugins.path.join(paths.cwd, 'CloudronManifest.json'); | ||||||
|  |     let manifestFile = plugins.smartfile.fs.toStringSync(manifestPath); | ||||||
|  |     manifestFile = manifestFile.replace(/##version##/g, versionArg); | ||||||
|  |     plugins.smartfile.memory.toFsSync(manifestFile, manifestPath); | ||||||
|  |     logger.log('info', 'Version replaced in CloudronManifest file'); | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										1
									
								
								ts/manager.cloudron/mod.plugins.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								ts/manager.cloudron/mod.plugins.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | export * from '../npmci.plugins.js'; | ||||||
| @@ -77,20 +77,23 @@ export class NpmciDockerManager { | |||||||
|    */ |    */ | ||||||
|   public prepare = async () => { |   public prepare = async () => { | ||||||
|     // Always login to GitLab Registry |     // Always login to GitLab Registry | ||||||
|     if (!process.env.CI_JOB_TOKEN || process.env.CI_JOB_TOKEN === '') { |     if (process.env.GITLAB_CI) { | ||||||
|       logger.log('error', 'No registry token specified by gitlab!'); |       console.log('gitlab ci detected'); | ||||||
|       process.exit(1); |       if (!process.env.CI_JOB_TOKEN || process.env.CI_JOB_TOKEN === '') { | ||||||
|  |         logger.log('error', 'Running in Gitlab CI, but no registry token specified by gitlab!'); | ||||||
|  |         process.exit(1); | ||||||
|  |       } | ||||||
|  |       this.npmciRegistryStorage.addRegistry( | ||||||
|  |         new DockerRegistry({ | ||||||
|  |           registryUrl: 'registry.gitlab.com', | ||||||
|  |           username: 'gitlab-ci-token', | ||||||
|  |           password: process.env.CI_JOB_TOKEN, | ||||||
|  |         }) | ||||||
|  |       ); | ||||||
|     } |     } | ||||||
|     this.npmciRegistryStorage.addRegistry( |  | ||||||
|       new DockerRegistry({ |  | ||||||
|         registryUrl: 'registry.gitlab.com', |  | ||||||
|         username: 'gitlab-ci-token', |  | ||||||
|         password: process.env.CI_JOB_TOKEN, |  | ||||||
|       }) |  | ||||||
|     ); |  | ||||||
|  |  | ||||||
|     // handle registries |     // handle registries | ||||||
|     await plugins.smartparam.forEachMinimatch( |     await plugins.smartobject.forEachMinimatch( | ||||||
|       process.env, |       process.env, | ||||||
|       'NPMCI_LOGIN_DOCKER*', |       'NPMCI_LOGIN_DOCKER*', | ||||||
|       async (envString: string) => { |       async (envString: string) => { | ||||||
| @@ -176,4 +179,12 @@ export class NpmciDockerManager { | |||||||
|     await this.prepare(); |     await this.prepare(); | ||||||
|     return await Dockerfile.readDockerfiles(this).then(Dockerfile.testDockerfiles); |     return await Dockerfile.readDockerfiles(this).then(Dockerfile.testDockerfiles); | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * can be used to get the Dockerfiles in the directory | ||||||
|  |    */ | ||||||
|  |   getDockerfiles = async () => { | ||||||
|  |     const dockerfiles = await Dockerfile.readDockerfiles(this); | ||||||
|  |     return dockerfiles; | ||||||
|  |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -120,15 +120,19 @@ export class Dockerfile { | |||||||
|    * returns a version for a docker file |    * returns a version for a docker file | ||||||
|    * @execution SYNC |    * @execution SYNC | ||||||
|    */ |    */ | ||||||
|   public static dockerFileVersion(dockerfileNameArg: string): string { |   public static dockerFileVersion(dockerfileInstanceArg: Dockerfile, dockerfileNameArg: string): string { | ||||||
|     let versionString: string; |     let versionString: string; | ||||||
|     const versionRegex = /Dockerfile_([a-zA-Z0-9\.]*)$/; |     const versionRegex = /Dockerfile_([^:_]*)$/; | ||||||
|     const regexResultArray = versionRegex.exec(dockerfileNameArg); |     const regexResultArray = versionRegex.exec(dockerfileNameArg); | ||||||
|     if (regexResultArray && regexResultArray.length === 2) { |     if (regexResultArray && regexResultArray.length === 2) { | ||||||
|       versionString = regexResultArray[1]; |       versionString = regexResultArray[1]; | ||||||
|     } else { |     } else { | ||||||
|       versionString = 'latest'; |       versionString = 'latest'; | ||||||
|     } |     } | ||||||
|  |     versionString = versionString.replace( | ||||||
|  |       '##version##', | ||||||
|  |       dockerfileInstanceArg.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo.npm.version | ||||||
|  |     ); | ||||||
|     return versionString; |     return versionString; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -233,7 +237,7 @@ export class Dockerfile { | |||||||
|       this.npmciDockerManagerRef.npmciRef.npmciEnv.repo.user + |       this.npmciDockerManagerRef.npmciRef.npmciEnv.repo.user + | ||||||
|       '/' + |       '/' + | ||||||
|       this.npmciDockerManagerRef.npmciRef.npmciEnv.repo.repo; |       this.npmciDockerManagerRef.npmciRef.npmciEnv.repo.repo; | ||||||
|     this.version = Dockerfile.dockerFileVersion(plugins.path.parse(options.filePath).base); |     this.version = Dockerfile.dockerFileVersion(this, plugins.path.parse(options.filePath).base); | ||||||
|     this.cleanTag = this.repo + ':' + this.version; |     this.cleanTag = this.repo + ':' + this.version; | ||||||
|     this.buildTag = this.cleanTag; |     this.buildTag = this.cleanTag; | ||||||
|  |  | ||||||
| @@ -281,6 +285,7 @@ export class Dockerfile { | |||||||
|       labels: [], |       labels: [], | ||||||
|       version: this.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo.npm.version, |       version: this.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo.npm.version, | ||||||
|     }); |     }); | ||||||
|  |     await this.npmciDockerManagerRef.npmciRef.npmciConfig.kvStorage.writeKey('latestPushedDockerTag', this.pushTag) | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|   | |||||||
| @@ -26,7 +26,7 @@ export class DockerRegistry { | |||||||
|       process.exit(1); |       process.exit(1); | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
|     const registryUrl = dockerRegexResultArray[0]; |     const registryUrl = dockerRegexResultArray[0].replace('https://', '').replace('http://', ''); | ||||||
|     const username = dockerRegexResultArray[1]; |     const username = dockerRegexResultArray[1]; | ||||||
|     const password = dockerRegexResultArray[2]; |     const password = dockerRegexResultArray[2]; | ||||||
|     return new DockerRegistry({ |     return new DockerRegistry({ | ||||||
|   | |||||||
| @@ -1,11 +1,10 @@ | |||||||
| import { logger } from '../npmci.logging.js'; | import { logger } from '../npmci.logging.js'; | ||||||
| import * as plugins from './mod.plugins.js'; | import * as plugins from './mod.plugins.js'; | ||||||
| import { ObjectMap } from '@pushrocks/lik'; |  | ||||||
|  |  | ||||||
| import { DockerRegistry } from './mod.classes.dockerregistry.js'; | import { DockerRegistry } from './mod.classes.dockerregistry.js'; | ||||||
|  |  | ||||||
| export class RegistryStorage { | export class RegistryStorage { | ||||||
|   objectMap = new ObjectMap<DockerRegistry>(); |   objectMap = new plugins.lik.ObjectMap<DockerRegistry>(); | ||||||
|   constructor() { |   constructor() { | ||||||
|     // Nothing here |     // Nothing here | ||||||
|   } |   } | ||||||
|   | |||||||
| @@ -54,7 +54,7 @@ export class NpmciNpmManager { | |||||||
|   public async prepare() { |   public async prepare() { | ||||||
|     const config = this.npmciRef.npmciConfig.getConfig(); |     const config = this.npmciRef.npmciConfig.getConfig(); | ||||||
|     let npmrcFileString: string = ''; |     let npmrcFileString: string = ''; | ||||||
|     await plugins.smartparam.forEachMinimatch( |     await plugins.smartobject.forEachMinimatch( | ||||||
|       process.env, |       process.env, | ||||||
|       'NPMCI_TOKEN_NPM*', |       'NPMCI_TOKEN_NPM*', | ||||||
|       (npmEnvArg: string) => { |       (npmEnvArg: string) => { | ||||||
| @@ -100,7 +100,7 @@ export class NpmciNpmManager { | |||||||
|       let publishVerdaccioAsWell = false; |       let publishVerdaccioAsWell = false; | ||||||
|       const config = this.npmciRef.npmciConfig.getConfig(); |       const config = this.npmciRef.npmciConfig.getConfig(); | ||||||
|       const availableRegistries: string[] = []; |       const availableRegistries: string[] = []; | ||||||
|       await plugins.smartparam.forEachMinimatch( |       await plugins.smartobject.forEachMinimatch( | ||||||
|         process.env, |         process.env, | ||||||
|         'NPMCI_TOKEN_NPM*', |         'NPMCI_TOKEN_NPM*', | ||||||
|         (npmEnvArg: string) => { |         (npmEnvArg: string) => { | ||||||
|   | |||||||
| @@ -31,7 +31,7 @@ const notUndefined = (stringArg: string) => { | |||||||
|  */ |  */ | ||||||
| export let prepare = async () => { | export let prepare = async () => { | ||||||
|   sshInstance = new plugins.smartssh.SshInstance(); // init ssh instance |   sshInstance = new plugins.smartssh.SshInstance(); // init ssh instance | ||||||
|   plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_SSHKEY_*', evaluateSshEnv); |   plugins.smartobject.forEachMinimatch(process.env, 'NPMCI_SSHKEY_*', evaluateSshEnv); | ||||||
|   if (!process.env.NPMTS_TEST) { |   if (!process.env.NPMTS_TEST) { | ||||||
|     sshInstance.writeToDisk(); |     sshInstance.writeToDisk(); | ||||||
|   } else { |   } else { | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ const triggerValueRegex = | |||||||
|  |  | ||||||
| export let trigger = async () => { | export let trigger = async () => { | ||||||
|   logger.log('info', 'now running triggers'); |   logger.log('info', 'now running triggers'); | ||||||
|   await plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_TRIGGER_*', evaluateTrigger); |   await plugins.smartobject.forEachMinimatch(process.env, 'NPMCI_TRIGGER_*', evaluateTrigger); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| const evaluateTrigger = async (triggerEnvVarArg) => { | const evaluateTrigger = async (triggerEnvVarArg) => { | ||||||
|   | |||||||
| @@ -2,12 +2,10 @@ import { logger } from './npmci.logging.js'; | |||||||
| import * as plugins from './npmci.plugins.js'; | import * as plugins from './npmci.plugins.js'; | ||||||
| import * as paths from './npmci.paths.js'; | import * as paths from './npmci.paths.js'; | ||||||
|  |  | ||||||
| import * as smartpromise from '@pushrocks/smartpromise'; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * wether nvm is available or not |  * wether nvm is available or not | ||||||
|  */ |  */ | ||||||
| export let nvmAvailable = smartpromise.defer<boolean>(); | export let nvmAvailable = plugins.smartpromise.defer<boolean>(); | ||||||
| /** | /** | ||||||
|  * the smartshell instance for npmci |  * the smartshell instance for npmci | ||||||
|  */ |  */ | ||||||
|   | |||||||
| @@ -1,17 +1,21 @@ | |||||||
| import * as plugins from './npmci.plugins.js'; | import * as plugins from './npmci.plugins.js'; | ||||||
|  |  | ||||||
| import { CloudlyConnector } from './connector.cloudly/cloudlyconnector.js'; |  | ||||||
|  |  | ||||||
|  | // env | ||||||
|  | import { NpmciEnv } from './npmci.classes.npmcienv.js'; | ||||||
| import { NpmciInfo } from './npmci.classes.npmciinfo.js'; | import { NpmciInfo } from './npmci.classes.npmciinfo.js'; | ||||||
| import { NpmciCli } from './npmci.classes.npmcicli.js'; | import { NpmciCli } from './npmci.classes.npmcicli.js'; | ||||||
| import { NpmciConfig } from './npmci.classes.npmciconfig.js'; | import { NpmciConfig } from './npmci.classes.npmciconfig.js'; | ||||||
|  |  | ||||||
| // mods | // connectors | ||||||
|  | import { CloudlyConnector } from './connector.cloudly/cloudlyconnector.js'; | ||||||
|  |  | ||||||
|  | // managers | ||||||
|  | import { NpmciCloudronManager } from './manager.cloudron/index.js'; | ||||||
| import { NpmciDockerManager } from './manager.docker/index.js'; | import { NpmciDockerManager } from './manager.docker/index.js'; | ||||||
| import { NpmciGitManager } from './manager.git/index.js'; | import { NpmciGitManager } from './manager.git/index.js'; | ||||||
| import { NpmciNodeJsManager } from './manager.nodejs/index.js'; | import { NpmciNodeJsManager } from './manager.nodejs/index.js'; | ||||||
| import { NpmciNpmManager } from './manager.npm/index.js'; | import { NpmciNpmManager } from './manager.npm/index.js'; | ||||||
| import { NpmciEnv } from './npmci.classes.npmcienv.js'; |  | ||||||
|  |  | ||||||
| export class Npmci { | export class Npmci { | ||||||
|   public analytics: plugins.smartanalytics.Analytics; |   public analytics: plugins.smartanalytics.Analytics; | ||||||
| @@ -23,6 +27,7 @@ export class Npmci { | |||||||
|   public npmciCli: NpmciCli; |   public npmciCli: NpmciCli; | ||||||
|  |  | ||||||
|   // managers |   // managers | ||||||
|  |   public cloudronManager: NpmciCloudronManager; | ||||||
|   public dockerManager: NpmciDockerManager; |   public dockerManager: NpmciDockerManager; | ||||||
|   public gitManager: NpmciGitManager; |   public gitManager: NpmciGitManager; | ||||||
|   public nodejsManager: NpmciNodeJsManager; |   public nodejsManager: NpmciNodeJsManager; | ||||||
| @@ -34,22 +39,23 @@ export class Npmci { | |||||||
|       projectId: 'gitzone', |       projectId: 'gitzone', | ||||||
|       appName: 'npmci', |       appName: 'npmci', | ||||||
|     }); |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public async start() { | ||||||
|     this.cloudlyConnector = new CloudlyConnector(this); |     this.cloudlyConnector = new CloudlyConnector(this); | ||||||
|     this.npmciEnv = new NpmciEnv(this); |     this.npmciEnv = new NpmciEnv(this); | ||||||
|     this.npmciInfo = new NpmciInfo(this); |     this.npmciInfo = new NpmciInfo(this); | ||||||
|  |     await this.npmciInfo.printToConsole(); | ||||||
|     this.npmciCli = new NpmciCli(this); |     this.npmciCli = new NpmciCli(this); | ||||||
|     this.npmciConfig = new NpmciConfig(this); |     this.npmciConfig = new NpmciConfig(this); | ||||||
|  |     await this.npmciConfig.init(); | ||||||
|  |  | ||||||
|     // managers |     // managers | ||||||
|  |     this.cloudronManager = new NpmciCloudronManager(this); | ||||||
|     this.dockerManager = new NpmciDockerManager(this); |     this.dockerManager = new NpmciDockerManager(this); | ||||||
|     this.gitManager = new NpmciGitManager(this); |     this.gitManager = new NpmciGitManager(this); | ||||||
|     this.nodejsManager = new NpmciNodeJsManager(this); |     this.nodejsManager = new NpmciNodeJsManager(this); | ||||||
|     this.npmManager = new NpmciNpmManager(this); |     this.npmManager = new NpmciNpmManager(this); | ||||||
|   } |  | ||||||
|  |  | ||||||
|   public async start() { |  | ||||||
|     await this.npmciInfo.printToConsole(); |  | ||||||
|     await this.npmciConfig.init(); |  | ||||||
|     this.npmciCli.startParse(); |     this.npmciCli.startParse(); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -24,6 +24,17 @@ export class NpmciCli { | |||||||
|       } |       } | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|  |     // cloudron | ||||||
|  |     this.smartcli.addCommand('cloudron').subscribe( | ||||||
|  |       async (argv) => { | ||||||
|  |         await this.npmciRef.cloudronManager.handleCli(argv); | ||||||
|  |       }, | ||||||
|  |       (err) => { | ||||||
|  |         console.log(err); | ||||||
|  |         process.exit(1); | ||||||
|  |       } | ||||||
|  |     ); | ||||||
|  |  | ||||||
|     // command |     // command | ||||||
|     this.smartcli.addCommand('command').subscribe( |     this.smartcli.addCommand('command').subscribe( | ||||||
|       async (argv) => { |       async (argv) => { | ||||||
| @@ -36,7 +47,7 @@ export class NpmciCli { | |||||||
|       } |       } | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|     // command |     // git | ||||||
|     this.smartcli.addCommand('git').subscribe( |     this.smartcli.addCommand('git').subscribe( | ||||||
|       async (argvArg) => { |       async (argvArg) => { | ||||||
|         await this.npmciRef.gitManager.handleCli(argvArg); |         await this.npmciRef.gitManager.handleCli(argvArg); | ||||||
|   | |||||||
| @@ -25,6 +25,9 @@ export interface INpmciOptions { | |||||||
|  |  | ||||||
|   // urls |   // urls | ||||||
|   urlCloudly: string; |   urlCloudly: string; | ||||||
|  |  | ||||||
|  |   // cloudron | ||||||
|  |   cloudronAppName?: string; | ||||||
| } | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -41,10 +44,12 @@ export class NpmciConfig { | |||||||
|  |  | ||||||
|   constructor(npmciRefArg: Npmci) { |   constructor(npmciRefArg: Npmci) { | ||||||
|     this.npmciRef = npmciRefArg; |     this.npmciRef = npmciRefArg; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public async init() { | ||||||
|     this.npmciNpmextra = new plugins.npmextra.Npmextra(paths.cwd); |     this.npmciNpmextra = new plugins.npmextra.Npmextra(paths.cwd); | ||||||
|     this.kvStorage = new plugins.npmextra.KeyValueStore( |     this.kvStorage = new plugins.npmextra.KeyValueStore( | ||||||
|       'custom', |       'userHomeDir', | ||||||
|       `${this.npmciRef.npmciEnv.repo.user}_${this.npmciRef.npmciEnv.repo.repo}` |       `${this.npmciRef.npmciEnv.repo.user}_${this.npmciRef.npmciEnv.repo.repo}` | ||||||
|     ); |     ); | ||||||
|     this.npmciQenv = new plugins.qenv.Qenv( |     this.npmciQenv = new plugins.qenv.Qenv( | ||||||
| @@ -62,11 +67,8 @@ export class NpmciConfig { | |||||||
|       npmRegistryUrl: 'registry.npmjs.org', |       npmRegistryUrl: 'registry.npmjs.org', | ||||||
|       gitlabRunnerTags: [], |       gitlabRunnerTags: [], | ||||||
|       dockerBuildargEnvMap: {}, |       dockerBuildargEnvMap: {}, | ||||||
|       urlCloudly: this.npmciQenv.getEnvVarOnDemand('NPMCI_URL_CLOUDLY'), |       urlCloudly: await this.npmciQenv.getEnvVarOnDemand('NPMCI_URL_CLOUDLY'), | ||||||
|     }; |     }; | ||||||
|   } |  | ||||||
|  |  | ||||||
|   public async init() { |  | ||||||
|     this.configObject = this.npmciNpmextra.dataFor<INpmciOptions>('npmci', this.configObject); |     this.configObject = this.npmciNpmextra.dataFor<INpmciOptions>('npmci', this.configObject); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -9,7 +9,12 @@ export class NpmciEnv { | |||||||
|  |  | ||||||
|   constructor(npmciRefArg: Npmci) { |   constructor(npmciRefArg: Npmci) { | ||||||
|     this.npmciRef = npmciRefArg; |     this.npmciRef = npmciRefArg; | ||||||
|     this.repoString = process.env.CI_REPOSITORY_URL; |     if (process.env.GITLAB_CI) { | ||||||
|  |       this.repoString = process.env.CI_REPOSITORY_URL; | ||||||
|  |     } | ||||||
|  |     if (process.env.NPMCI_COMPUTED_REPOURL) { | ||||||
|  |       this.repoString = process.env.NPMCI_COMPUTED_REPOURL; | ||||||
|  |     } | ||||||
|     if (!this.repoString) { |     if (!this.repoString) { | ||||||
|       this.repoString = 'https://undefined:undefined@github.com/undefined/undefined.git'; |       this.repoString = 'https://undefined:undefined@github.com/undefined/undefined.git'; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ export class NpmciInfo { | |||||||
|     this.npmciRef = npmciArg; |     this.npmciRef = npmciArg; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   public printToConsole() { |   public async printToConsole() { | ||||||
|     logger.log('info', `npmci version: ${this.projectInfo.version}`); |     await logger.log('info', `npmci version: ${this.projectInfo.version}`); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ import * as path from 'path'; | |||||||
| export { path }; | export { path }; | ||||||
|  |  | ||||||
| // @apiglobal | // @apiglobal | ||||||
| import * as typedrequest from '@apiglobal/typedrequest'; | import * as typedrequest from '@api.global/typedrequest'; | ||||||
|  |  | ||||||
| export { typedrequest }; | export { typedrequest }; | ||||||
|  |  | ||||||
| @@ -13,27 +13,29 @@ import * as servezoneInterfaces from '@servezone/interfaces'; | |||||||
|  |  | ||||||
| export { servezoneInterfaces }; | export { servezoneInterfaces }; | ||||||
|  |  | ||||||
| // @pushrocks | // @push.rocks | ||||||
| import * as npmextra from '@pushrocks/npmextra'; | import * as lik from '@push.rocks/lik'; | ||||||
| import * as projectinfo from '@pushrocks/projectinfo'; | import * as npmextra from '@push.rocks/npmextra'; | ||||||
| import * as qenv from '@pushrocks/qenv'; | import * as projectinfo from '@push.rocks/projectinfo'; | ||||||
| import * as smartanalytics from '@pushrocks/smartanalytics'; | import * as qenv from '@push.rocks/qenv'; | ||||||
| import * as smartdelay from '@pushrocks/smartdelay'; | import * as smartanalytics from '@push.rocks/smartanalytics'; | ||||||
| import * as smartfile from '@pushrocks/smartfile'; | import * as smartdelay from '@push.rocks/smartdelay'; | ||||||
| import * as smartcli from '@pushrocks/smartcli'; | import * as smartfile from '@push.rocks/smartfile'; | ||||||
| import * as smartgit from '@pushrocks/smartgit'; | import * as smartcli from '@push.rocks/smartcli'; | ||||||
| import * as smartlog from '@pushrocks/smartlog'; | import * as smartgit from '@push.rocks/smartgit'; | ||||||
| import * as smartlogDestinationLocal from '@pushrocks/smartlog-destination-local'; | import * as smartlog from '@push.rocks/smartlog'; | ||||||
| import * as smartparam from '@pushrocks/smartparam'; | import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local'; | ||||||
| import * as smartpath from '@pushrocks/smartpath'; | import * as smartobject from '@push.rocks/smartobject'; | ||||||
| import * as smartpromise from '@pushrocks/smartpromise'; | import * as smartpath from '@push.rocks/smartpath'; | ||||||
| import * as smartrequest from '@pushrocks/smartrequest'; | import * as smartpromise from '@push.rocks/smartpromise'; | ||||||
| import * as smartshell from '@pushrocks/smartshell'; | import * as smartrequest from '@push.rocks/smartrequest'; | ||||||
| import * as smartsocket from '@pushrocks/smartsocket'; | import * as smartshell from '@push.rocks/smartshell'; | ||||||
| import * as smartssh from '@pushrocks/smartssh'; | import * as smartsocket from '@push.rocks/smartsocket'; | ||||||
| import * as smartstring from '@pushrocks/smartstring'; | import * as smartssh from '@push.rocks/smartssh'; | ||||||
|  | import * as smartstring from '@push.rocks/smartstring'; | ||||||
|  |  | ||||||
| export { | export { | ||||||
|  |   lik, | ||||||
|   npmextra, |   npmextra, | ||||||
|   projectinfo, |   projectinfo, | ||||||
|   qenv, |   qenv, | ||||||
| @@ -44,7 +46,7 @@ export { | |||||||
|   smartcli, |   smartcli, | ||||||
|   smartlog, |   smartlog, | ||||||
|   smartlogDestinationLocal, |   smartlogDestinationLocal, | ||||||
|   smartparam, |   smartobject, | ||||||
|   smartpath, |   smartpath, | ||||||
|   smartpromise, |   smartpromise, | ||||||
|   smartrequest, |   smartrequest, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user