Compare commits
	
		
			32 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 6b5390cef8 | |||
| 2736b85de3 | |||
| 82d7778f59 | |||
| 8c99cc0491 | |||
| 955e3d0dbe | |||
| 702ae8bed8 | |||
| b6f0723b75 | |||
| 8a2fb30e59 | |||
| 95b4030120 | |||
| 5c77cfbdc2 | |||
| 5ea42320a9 | |||
| d07ebfc9c6 | |||
| bbb5718184 | |||
| 0d8b54637c | |||
| e51b2e28b9 | |||
| f767140cc8 | |||
| 0d4d69f072 | |||
| a3e628c43f | |||
| a58fa135c1 | |||
| 93c7af6c91 | |||
| ad0e12bf7b | |||
| 498dd6eff6 | |||
| b3aa964739 | |||
| 03eb9d2657 | |||
| 373a838a6a | |||
| 960e3f4675 | |||
| 09bf676b58 | |||
| 76ba8e2ab9 | |||
| aaaaca2d19 | |||
| 71b27eda17 | |||
| 2d00882fd7 | |||
| ba5e69041f | 
							
								
								
									
										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 | ||||||
							
								
								
									
										107
									
								
								.gitea/workflows/default_tags.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								.gitea/workflows/default_tags.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,107 @@ | |||||||
|  | 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}} | ||||||
|  |  | ||||||
|  | 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 | ||||||
							
								
								
									
										141
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							
							
						
						
									
										141
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							| @@ -1,141 +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: |  | ||||||
|   - npm install -g @shipzone/npmci |  | ||||||
|  |  | ||||||
| # ==================== |  | ||||||
| # security stage |  | ||||||
| # ==================== |  | ||||||
| mirror: |  | ||||||
|   stage: security |  | ||||||
|   script: |  | ||||||
|     - npmci git mirror |  | ||||||
|   only: |  | ||||||
|     - tags |  | ||||||
|   tags: |  | ||||||
|     - lossless |  | ||||||
|     - docker |  | ||||||
|     - notpriv |  | ||||||
|  |  | ||||||
| auditProductionDependencies: |  | ||||||
|   image: registry.gitlab.com/hosttoday/ht-docker-node:npmci |  | ||||||
|   stage: security |  | ||||||
|   script: |  | ||||||
|     - npmci npm prepare |  | ||||||
|     - npmci command npm install --production --ignore-scripts |  | ||||||
|     - npmci command npm config set registry https://registry.npmjs.org |  | ||||||
|     - npmci command npm audit --audit-level=high --only=prod --production |  | ||||||
|   tags: |  | ||||||
|     - docker |  | ||||||
|   allow_failure: true |  | ||||||
|  |  | ||||||
| auditDevDependencies: |  | ||||||
|   image: registry.gitlab.com/hosttoday/ht-docker-node:npmci |  | ||||||
|   stage: security |  | ||||||
|   script: |  | ||||||
|     - npmci npm prepare |  | ||||||
|     - npmci command npm install --ignore-scripts |  | ||||||
|     - npmci command npm config set registry https://registry.npmjs.org |  | ||||||
|     - npmci command npm audit --audit-level=high --only=dev |  | ||||||
|   tags: |  | ||||||
|     - docker |  | ||||||
|   allow_failure: true |  | ||||||
|  |  | ||||||
| # ==================== |  | ||||||
| # test stage |  | ||||||
| # ==================== |  | ||||||
|  |  | ||||||
| testStable: |  | ||||||
|   stage: test |  | ||||||
|   script: |  | ||||||
|     - npmci npm prepare |  | ||||||
|     - npmci node install stable |  | ||||||
|     - npmci npm install |  | ||||||
|     - npmci npm test |  | ||||||
|   coverage: /\d+.?\d+?\%\s*coverage/ |  | ||||||
|   tags: |  | ||||||
|     - docker |  | ||||||
|  |  | ||||||
| testBuild: |  | ||||||
|   stage: test |  | ||||||
|   script: |  | ||||||
|     - npmci npm prepare |  | ||||||
|     - npmci node install stable |  | ||||||
|     - npmci npm install |  | ||||||
|     - npmci command npm run 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 tslint typescript |  | ||||||
|     - npmci npm prepare |  | ||||||
|     - npmci npm install |  | ||||||
|     - npmci command "tslint -c tslint.json ./ts/**/*.ts" |  | ||||||
|   tags: |  | ||||||
|     - lossless |  | ||||||
|     - docker |  | ||||||
|     - priv |  | ||||||
|  |  | ||||||
| trigger: |  | ||||||
|   stage: metadata |  | ||||||
|   script: |  | ||||||
|     - npmci trigger |  | ||||||
|   only: |  | ||||||
|     - tags |  | ||||||
|   tags: |  | ||||||
|     - lossless |  | ||||||
|     - docker |  | ||||||
|     - notpriv |  | ||||||
|  |  | ||||||
| pages: |  | ||||||
|   stage: metadata |  | ||||||
|   script: |  | ||||||
|     - npmci node install lts |  | ||||||
|     - npmci command npm install -g @gitzone/tsdoc |  | ||||||
|     - npmci npm prepare |  | ||||||
|     - npmci npm install |  | ||||||
|     - npmci command tsdoc |  | ||||||
|   tags: |  | ||||||
|     - lossless |  | ||||||
|     - docker |  | ||||||
|     - notpriv |  | ||||||
|   only: |  | ||||||
|     - tags |  | ||||||
|   artifacts: |  | ||||||
|     expire_in: 1 week |  | ||||||
|     paths: |  | ||||||
|       - public |  | ||||||
|   allow_failure: true |  | ||||||
| @@ -14,7 +14,7 @@ | |||||||
|       "githost": "gitlab.com", |       "githost": "gitlab.com", | ||||||
|       "gitscope": "shipzone", |       "gitscope": "shipzone", | ||||||
|       "gitrepo": "npmci", |       "gitrepo": "npmci", | ||||||
|       "shortDescription": "node and docker in gitlab ci on steroids", |       "description": "node and docker in gitlab ci on steroids", | ||||||
|       "npmPackagename": "@shipzone/npmci", |       "npmPackagename": "@shipzone/npmci", | ||||||
|       "license": "MIT" |       "license": "MIT" | ||||||
|     } |     } | ||||||
|   | |||||||
							
								
								
									
										13685
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										13685
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										39
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								package.json
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@shipzone/npmci", |   "name": "@shipzone/npmci", | ||||||
|   "version": "4.0.5", |   "version": "4.1.9", | ||||||
|   "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", | ||||||
| @@ -12,7 +12,8 @@ | |||||||
|   "scripts": { |   "scripts": { | ||||||
|     "test": "tstest test/", |     "test": "tstest test/", | ||||||
|     "build": "tsbuild --allowimplicitany && (npm run testVersion)", |     "build": "tsbuild --allowimplicitany && (npm run testVersion)", | ||||||
|     "testVersion": "(cd test/assets/ && node ../../cli.js -v)" |     "testVersion": "(cd test/assets/ && node ../../cli.js -v)", | ||||||
|  |     "buildDocs": "tsdoc" | ||||||
|   }, |   }, | ||||||
|   "repository": { |   "repository": { | ||||||
|     "type": "git", |     "type": "git", | ||||||
| @@ -25,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.42", | ||||||
|     "@gitzone/tstest": "^1.0.73", |     "@gitzone/tstest": "^1.0.74", | ||||||
|     "@pushrocks/tapbundle": "^5.0.4", |     "@pushrocks/tapbundle": "^5.0.8", | ||||||
|     "@types/node": "^18.8.3" |     "@types/node": "^20.3.1" | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@apiglobal/typedrequest": "^2.0.10", |     "@apiglobal/typedrequest": "^2.0.10", | ||||||
|     "@pushrocks/lik": "^6.0.0", |     "@pushrocks/lik": "^6.0.2", | ||||||
|     "@pushrocks/npmextra": "^3.0.9", |     "@pushrocks/npmextra": "^3.0.9", | ||||||
|     "@pushrocks/projectinfo": "^5.0.1", |     "@pushrocks/projectinfo": "^5.0.1", | ||||||
|     "@pushrocks/qenv": "^5.0.2", |     "@pushrocks/qenv": "^5.0.2", | ||||||
|     "@pushrocks/smartanalytics": "^2.0.15", |     "@pushrocks/smartanalytics": "^2.0.15", | ||||||
|     "@pushrocks/smartcli": "^4.0.6", |     "@pushrocks/smartcli": "^4.0.6", | ||||||
|     "@pushrocks/smartdelay": "^2.0.13", |     "@pushrocks/smartdelay": "^3.0.1", | ||||||
|     "@pushrocks/smartenv": "^5.0.3", |     "@pushrocks/smartenv": "^5.0.5", | ||||||
|     "@pushrocks/smartfile": "^10.0.5", |     "@pushrocks/smartfile": "^10.0.25", | ||||||
|     "@pushrocks/smartgit": "^3.0.0", |     "@pushrocks/smartgit": "^3.0.0", | ||||||
|     "@pushrocks/smartlog": "^3.0.1", |     "@pushrocks/smartlog": "^3.0.2", | ||||||
|     "@pushrocks/smartlog-destination-local": "^8.0.8", |     "@pushrocks/smartlog-destination-local": "^9.0.0", | ||||||
|     "@pushrocks/smartparam": "^1.1.6", |     "@pushrocks/smartparam": "^1.1.6", | ||||||
|     "@pushrocks/smartpath": "^5.0.5", |     "@pushrocks/smartpath": "^5.0.5", | ||||||
|     "@pushrocks/smartpromise": "^3.1.7", |     "@pushrocks/smartpromise": "^4.0.2", | ||||||
|     "@pushrocks/smartrequest": "^2.0.11", |     "@pushrocks/smartrequest": "^2.0.15", | ||||||
|     "@pushrocks/smartshell": "^2.0.30", |     "@pushrocks/smartshell": "^3.0.3", | ||||||
|     "@pushrocks/smartsocket": "^2.0.7", |     "@pushrocks/smartsocket": "^2.0.19", | ||||||
|     "@pushrocks/smartssh": "^2.0.0", |     "@pushrocks/smartssh": "^2.0.0", | ||||||
|     "@pushrocks/smartstring": "^4.0.5", |     "@pushrocks/smartstring": "^4.0.5", | ||||||
|     "@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": [ | ||||||
|   | |||||||
							
								
								
									
										3238
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										3238
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -21,7 +21,6 @@ Code Style | [](htt | |||||||
| PackagePhobia (total standalone install weight) | [](https://lossless.cloud) | PackagePhobia (total standalone install weight) | [](https://lossless.cloud) | ||||||
| PackagePhobia (package size on registry) | [](https://lossless.cloud) | PackagePhobia (package size on registry) | [](https://lossless.cloud) | ||||||
| BundlePhobia (total size when bundled) | [](https://lossless.cloud) | BundlePhobia (total size when bundled) | [](https://lossless.cloud) | ||||||
| Platform support | [](https://lossless.cloud) [](https://lossless.cloud) |  | ||||||
|  |  | ||||||
| ## Usage | ## Usage | ||||||
|  |  | ||||||
| @@ -106,7 +105,6 @@ We are always happy for code contributions. If you are not the code contributing | |||||||
|  |  | ||||||
| For further information read the linked docs at the top of this readme. | For further information read the linked docs at the top of this readme. | ||||||
|  |  | ||||||
| > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) | ## Legal | ||||||
|  | > MIT licensed | **©** [Task Venture Capital GmbH](https://task.vc) | ||||||
| | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy) | | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy) | ||||||
|  |  | ||||||
| [](https://maintainedby.lossless.com) |  | ||||||
|   | |||||||
| @@ -1,23 +1,26 @@ | |||||||
| process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = '0'; | process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; | ||||||
| import { tap, expect } from '@pushrocks/tapbundle'; | import { tap, expect } from '@pushrocks/tapbundle'; | ||||||
|  |  | ||||||
| import * as cloudlyConnectorMod from '../ts/connector.cloudly/cloudlyconnector.js'; | import * as cloudlyConnectorMod from '../ts/connector.cloudly/cloudlyconnector.js'; | ||||||
|  |  | ||||||
| tap.test('should be able to announce a container to cloudly', async () => { | tap.test('should be able to announce a container to cloudly', async () => { | ||||||
|   const cloudlyConnector = new cloudlyConnectorMod.CloudlyConnector(null); |   const cloudlyConnector = new cloudlyConnectorMod.CloudlyConnector(null); | ||||||
|   await cloudlyConnector.announceDockerContainer({ |   await cloudlyConnector.announceDockerContainer( | ||||||
|     registryUrl: 'registry.losssless.com', |     { | ||||||
|     tag: 'testcontainer', |       registryUrl: 'registry.losssless.com', | ||||||
|     version: 'x.x.x', |       tag: 'testcontainer', | ||||||
|     labels: [] |       version: 'x.x.x', | ||||||
|   }, 'cloudly.lossless.one') |       labels: [], | ||||||
|  |     }, | ||||||
|  |     'cloudly.lossless.one' | ||||||
|  |   ); | ||||||
| }); | }); | ||||||
|  |  | ||||||
| tap.test('should close the program despite socket timeout', async (toolsArg) => { | tap.test('should close the program despite socket timeout', async (toolsArg) => { | ||||||
|   // TODO: remove when unreffed timeouts in webrequest have been solved. |   // TODO: remove when unreffed timeouts in webrequest have been solved. | ||||||
|   toolsArg.delayFor(0).then(() => { |   toolsArg.delayFor(0).then(() => { | ||||||
|     process.exit(); |     process.exit(); | ||||||
|   }) |   }); | ||||||
| }) | }); | ||||||
|  |  | ||||||
| tap.start(); | tap.start(); | ||||||
| @@ -3,7 +3,7 @@ import * as path from 'path'; | |||||||
| import * as smartpath from '@pushrocks/smartpath'; | import * as smartpath from '@pushrocks/smartpath'; | ||||||
|  |  | ||||||
| process.env.NPMTS_TEST = 'true'; | process.env.NPMTS_TEST = 'true'; | ||||||
| process.env.NPMCI_URL_CLOUDLY = 'localhost' | process.env.NPMCI_URL_CLOUDLY = 'localhost'; | ||||||
|  |  | ||||||
| // set up environment | // set up environment | ||||||
| process.env.CI_REPOSITORY_URL = 'https://yyyyyy:xxxxxxxx@gitlab.com/mygroup/myrepo.git'; | process.env.CI_REPOSITORY_URL = 'https://yyyyyy:xxxxxxxx@gitlab.com/mygroup/myrepo.git'; | ||||||
| @@ -23,7 +23,7 @@ let npmci: 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'); | ||||||
| }) | }); | ||||||
|  |  | ||||||
| // ====== | // ====== | ||||||
| // Docker | // Docker | ||||||
|   | |||||||
| @@ -3,6 +3,6 @@ | |||||||
|  */ |  */ | ||||||
| export const commitinfo = { | export const commitinfo = { | ||||||
|   name: '@shipzone/npmci', |   name: '@shipzone/npmci', | ||||||
|   version: '4.0.5', |   version: '4.1.9', | ||||||
|   description: 'node and docker in gitlab ci on steroids' |   description: 'node and docker in gitlab ci on steroids' | ||||||
| } | } | ||||||
|   | |||||||
| @@ -33,7 +33,7 @@ export class CloudlyConnector { | |||||||
|       ); |       ); | ||||||
|  |  | ||||||
|     const response = await typedrequest.fire({ |     const response = await typedrequest.fire({ | ||||||
|       containerImageInfo: optionsArg |       containerImageInfo: optionsArg, | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -77,7 +77,7 @@ export class NpmciDockerManager { | |||||||
|    */ |    */ | ||||||
|   public prepare = async () => { |   public prepare = async () => { | ||||||
|     // Always login to GitLab Registry |     // Always login to GitLab Registry | ||||||
|     if (!process.env.CI_BUILD_TOKEN || process.env.CI_BUILD_TOKEN === '') { |     if (!process.env.CI_JOB_TOKEN || process.env.CI_JOB_TOKEN === '') { | ||||||
|       logger.log('error', 'No registry token specified by gitlab!'); |       logger.log('error', 'No registry token specified by gitlab!'); | ||||||
|       process.exit(1); |       process.exit(1); | ||||||
|     } |     } | ||||||
| @@ -85,7 +85,7 @@ export class NpmciDockerManager { | |||||||
|       new DockerRegistry({ |       new DockerRegistry({ | ||||||
|         registryUrl: 'registry.gitlab.com', |         registryUrl: 'registry.gitlab.com', | ||||||
|         username: 'gitlab-ci-token', |         username: 'gitlab-ci-token', | ||||||
|         password: process.env.CI_BUILD_TOKEN, |         password: process.env.CI_JOB_TOKEN, | ||||||
|       }) |       }) | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -177,14 +177,17 @@ export class Dockerfile { | |||||||
|   ): Promise<string> { |   ): Promise<string> { | ||||||
|     logger.log('info', 'checking for env vars to be supplied to the docker build'); |     logger.log('info', 'checking for env vars to be supplied to the docker build'); | ||||||
|     let buildArgsString: string = ''; |     let buildArgsString: string = ''; | ||||||
|     for (const key of Object.keys( |     for (const dockerArgKey of Object.keys( | ||||||
|       npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().dockerBuildargEnvMap |       npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().dockerBuildargEnvMap | ||||||
|     )) { |     )) { | ||||||
|       const targetValue = |       const dockerArgOuterEnvVar = | ||||||
|         process.env[ |         npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().dockerBuildargEnvMap[dockerArgKey]; | ||||||
|           npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().dockerBuildargEnvMap[key] |       logger.log( | ||||||
|         ]; |         'note', | ||||||
|       buildArgsString = `${buildArgsString} --build-arg ${key}="${targetValue}"`; |         `docker ARG "${dockerArgKey}" maps to outer env var "${dockerArgOuterEnvVar}"` | ||||||
|  |       ); | ||||||
|  |       const targetValue = process.env[dockerArgOuterEnvVar]; | ||||||
|  |       buildArgsString = `${buildArgsString} --build-arg ${dockerArgKey}="${targetValue}"`; | ||||||
|     } |     } | ||||||
|     return buildArgsString; |     return buildArgsString; | ||||||
|   } |   } | ||||||
| @@ -276,8 +279,7 @@ export class Dockerfile { | |||||||
|       registryUrl: this.pushTag, |       registryUrl: this.pushTag, | ||||||
|       tag: this.buildTag, |       tag: this.buildTag, | ||||||
|       labels: [], |       labels: [], | ||||||
|       version: |       version: this.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo.npm.version, | ||||||
|         this.npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().projectInfo.npm.version, |  | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -59,10 +59,9 @@ export class NpmciNodeJsManager { | |||||||
|       logger.log('warn', 'Nvm not in path so staying at installed node version!'); |       logger.log('warn', 'Nvm not in path so staying at installed node version!'); | ||||||
|     } |     } | ||||||
|     logger.log('info', 'now installing latest npm version'); |     logger.log('info', 'now installing latest npm version'); | ||||||
|     await bash('npm install -g npm && pnpm install -g pnpm'); |     await bash('npm install -g npm'); | ||||||
|     await bash('node -v'); |     await bash('node -v'); | ||||||
|     await bash('npm -v'); |     await bash('npm -v'); | ||||||
|     await bash('pnpm -v'); |  | ||||||
|  |  | ||||||
|     // lets look for further config |     // lets look for further config | ||||||
|     const config = await this.npmciRef.npmciConfig.getConfig(); |     const config = await this.npmciRef.npmciConfig.getConfig(); | ||||||
|   | |||||||
| @@ -59,6 +59,7 @@ export class NpmciNpmManager { | |||||||
|       'NPMCI_TOKEN_NPM*', |       'NPMCI_TOKEN_NPM*', | ||||||
|       (npmEnvArg: string) => { |       (npmEnvArg: string) => { | ||||||
|         const npmRegistryUrl = npmEnvArg.split('|')[0]; |         const npmRegistryUrl = npmEnvArg.split('|')[0]; | ||||||
|  |         logger.log('ok', `found token for ${npmRegistryUrl}`); | ||||||
|         let npmToken = npmEnvArg.split('|')[1]; |         let npmToken = npmEnvArg.split('|')[1]; | ||||||
|         if (npmEnvArg.split('|')[2] && npmEnvArg.split('|')[2] === 'plain') { |         if (npmEnvArg.split('|')[2] && npmEnvArg.split('|')[2] === 'plain') { | ||||||
|           logger.log('ok', 'npm token not base64 encoded.'); |           logger.log('ok', 'npm token not base64 encoded.'); | ||||||
|   | |||||||
							
								
								
									
										24
									
								
								ts/mod_precheck/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								ts/mod_precheck/index.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | import * as plugins from './plugins.js'; | ||||||
|  | import * as paths from '../npmci.paths.js'; | ||||||
|  | import { logger } from '../npmci.logging.js'; | ||||||
|  | import { Npmci } from '../npmci.classes.npmci.js'; | ||||||
|  |  | ||||||
|  | export const handleCli = async (npmciRefArg: Npmci, argvArg: any) => { | ||||||
|  |   logger.log('info', 'checking execution context'); | ||||||
|  |   const presentRunnerTags = process.env.CI_RUNNER_TAGS.split(',').map((stringArg) => | ||||||
|  |     stringArg.trim() | ||||||
|  |   ); | ||||||
|  |   let allDesiredGitlabRunnerTagsPresent = true; | ||||||
|  |   for (const desiredRunnerTag of npmciRefArg.npmciConfig.getConfig().gitlabRunnerTags) { | ||||||
|  |     if (!presentRunnerTags.includes(desiredRunnerTag)) { | ||||||
|  |       allDesiredGitlabRunnerTagsPresent = false; | ||||||
|  |       logger.log( | ||||||
|  |         'error', | ||||||
|  |         `Desired runnerRag ${desiredRunnerTag} is missing in current execution context.` | ||||||
|  |       ); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   if (!allDesiredGitlabRunnerTagsPresent) { | ||||||
|  |     process.exit(1); | ||||||
|  |   } | ||||||
|  | }; | ||||||
							
								
								
									
										1
									
								
								ts/mod_precheck/plugins.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								ts/mod_precheck/plugins.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | export * from '../npmci.plugins.js'; | ||||||
| @@ -79,17 +79,16 @@ export class NpmciCli { | |||||||
|       } |       } | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|  |     this.smartcli.addCommand('precheck').subscribe(async (argvArg) => { | ||||||
|  |       const modPrecheck = await import('./mod_precheck/index.js'); | ||||||
|  |       await modPrecheck.handleCli(this.npmciRef, argvArg); | ||||||
|  |     }); | ||||||
|  |  | ||||||
|     // trigger |     // trigger | ||||||
|     this.smartcli.addCommand('ssh').subscribe( |     this.smartcli.addCommand('ssh').subscribe(async (argvArg) => { | ||||||
|       async (argvArg) => { |       const modSsh = await import('./mod_ssh/index.js'); | ||||||
|         const modSsh = await import('./mod_ssh/index.js'); |       await modSsh.handleCli(argvArg); | ||||||
|         await modSsh.handleCli(argvArg); |     }); | ||||||
|       }, |  | ||||||
|       (err) => { |  | ||||||
|         console.log(err); |  | ||||||
|         process.exit(1); |  | ||||||
|       } |  | ||||||
|     ); |  | ||||||
|  |  | ||||||
|     // trigger |     // trigger | ||||||
|     this.smartcli.addCommand('trigger').subscribe( |     this.smartcli.addCommand('trigger').subscribe( | ||||||
|   | |||||||
| @@ -20,6 +20,9 @@ export interface INpmciOptions { | |||||||
|   dockerRegistryRepoMap: { [key: string]: string }; |   dockerRegistryRepoMap: { [key: string]: string }; | ||||||
|   dockerBuildargEnvMap: { [key: string]: string }; |   dockerBuildargEnvMap: { [key: string]: string }; | ||||||
|  |  | ||||||
|  |   // gitlab | ||||||
|  |   gitlabRunnerTags: string[]; | ||||||
|  |  | ||||||
|   // urls |   // urls | ||||||
|   urlCloudly: string; |   urlCloudly: string; | ||||||
| } | } | ||||||
| @@ -57,6 +60,7 @@ export class NpmciConfig { | |||||||
|       dockerRegistryRepoMap: {}, |       dockerRegistryRepoMap: {}, | ||||||
|       npmAccessLevel: 'private', |       npmAccessLevel: 'private', | ||||||
|       npmRegistryUrl: 'registry.npmjs.org', |       npmRegistryUrl: 'registry.npmjs.org', | ||||||
|  |       gitlabRunnerTags: [], | ||||||
|       dockerBuildargEnvMap: {}, |       dockerBuildargEnvMap: {}, | ||||||
|       urlCloudly: this.npmciQenv.getEnvVarOnDemand('NPMCI_URL_CLOUDLY'), |       urlCloudly: this.npmciQenv.getEnvVarOnDemand('NPMCI_URL_CLOUDLY'), | ||||||
|     }; |     }; | ||||||
|   | |||||||
| @@ -3,7 +3,10 @@ import * as plugins from './npmci.plugins.js'; | |||||||
| export const cwd = process.cwd(); | export const cwd = process.cwd(); | ||||||
|  |  | ||||||
| // package paths | // package paths | ||||||
| export const NpmciPackageRoot = plugins.path.join(plugins.smartpath.get.dirnameFromImportMetaUrl(import.meta.url), '../'); | export const NpmciPackageRoot = plugins.path.join( | ||||||
|  |   plugins.smartpath.get.dirnameFromImportMetaUrl(import.meta.url), | ||||||
|  |   '../' | ||||||
|  | ); | ||||||
| export const NpmciPackageConfig = plugins.path.join(NpmciPackageRoot, './config.json'); | export const NpmciPackageConfig = plugins.path.join(NpmciPackageRoot, './config.json'); | ||||||
|  |  | ||||||
| // project paths | // project paths | ||||||
|   | |||||||
| @@ -57,9 +57,7 @@ export { | |||||||
| // @tsclass scope | // @tsclass scope | ||||||
| import * as tsclass from '@tsclass/tsclass'; | import * as tsclass from '@tsclass/tsclass'; | ||||||
|  |  | ||||||
| export { | export { tsclass }; | ||||||
|   tsclass |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // third party | // third party | ||||||
| import * as through2 from 'through2'; | import * as through2 from 'through2'; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user