@fishawack/lab-env 4.45.1 → 4.46.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  ## Changelog
2
2
 
3
+ ### 4.46.0-beta.2 (2025-09-12)
4
+
5
+ #### Features
6
+
7
+ * added python settings ([5cacbb5](https://bitbucket.org/fishawackdigital/lab-env/commits/5cacbb56d7b7fb052959baad8e90cd98cac07c39))
8
+ * python deployments ([02f3293](https://bitbucket.org/fishawackdigital/lab-env/commits/02f32934c362826ed1e10f3609dd0eaac87a4f75))
9
+ * python now uses its own port as core also needed alongside python now ([c38c8f9](https://bitbucket.org/fishawackdigital/lab-env/commits/c38c8f962d024854c0764dcca88c26e7a808c122))
10
+
11
+ #### Bug Fixes
12
+
13
+ * dont stop package and mail commands on python projects ([6267142](https://bitbucket.org/fishawackdigital/lab-env/commits/62671425796c8ce03edfbdb71e50ca4676fd4eeb))
14
+
15
+ #### Build Updates
16
+
17
+ * bumped to latest bitbucket-ci config ([fcb22d8](https://bitbucket.org/fishawackdigital/lab-env/commits/fcb22d8ff7e99ce95e8bf3868b6dcf7192823bfd))
18
+ * use bitbucket beta exported beta and master config with post relase ([9ad0317](https://bitbucket.org/fishawackdigital/lab-env/commits/9ad0317e5c5a89640149412519b5e94491a48e92))
19
+
20
+ ### 4.46.0-beta.1 (2025-09-05)
21
+
22
+ #### Features
23
+
24
+ * write vscode workspace settings for python ([c6b2c4d](https://bitbucket.org/fishawackdigital/lab-env/commits/c6b2c4df1d730c054b966582119765d519e8f644))
25
+
26
+ #### Bug Fixes
27
+
28
+ * start now always ups whatever containers are configured ([eae144b](https://bitbucket.org/fishawackdigital/lab-env/commits/eae144be3d7f4ff2d0e39368a60c3eb280567b0c))
29
+ * use extrapaths to stop python warnings ([594887d](https://bitbucket.org/fishawackdigital/lab-env/commits/594887df096a4c46abbe47e0f2363bcc2bc28181))
30
+
3
31
  ### 4.45.1 (2025-09-04)
4
32
 
5
33
  #### Bug Fixes
@@ -0,0 +1,43 @@
1
+ #!/bin/bash
2
+
3
+ # Commit and create pull request for new version on aws-runner repo
4
+ git config --global user.email "digital@fishawack.com"
5
+
6
+ git config --global user.name "Digital Fishawack"
7
+
8
+ git clone https://$GIT_CREDENTIALS@bitbucket.org/fishawackdigital/aws-runner
9
+
10
+ cd aws-runner
11
+
12
+ git checkout -b "$BITBUCKET_REPO_SLUG-$BITBUCKET_COMMIT" origin/development
13
+
14
+ sed -i -e "s/\(@fishawack\/lab-env@\).*/\1$(jq -r '.version' ../package.json)/g" Dockerfile
15
+
16
+ git add .
17
+
18
+ git commit -m "build($BITBUCKET_REPO_SLUG): Bumped $BITBUCKET_REPO_SLUG"
19
+
20
+ git push origin "$BITBUCKET_REPO_SLUG-$BITBUCKET_COMMIT"
21
+
22
+ curl https://api.bitbucket.org/2.0/repositories/fishawackdigital/aws-runner/pullrequests \
23
+ -u $GIT_CREDENTIALS \
24
+ --header 'Content-Type: application/json' \
25
+ --data "{
26
+ \"title\": \"Bumped $BITBUCKET_REPO_SLUG\",
27
+ \"destination\": {
28
+ \"branch\": {
29
+ \"name\": \"development\"
30
+ }
31
+ },
32
+ \"source\": {
33
+ \"branch\": {
34
+ \"name\": \"$BITBUCKET_REPO_SLUG-$BITBUCKET_COMMIT\"
35
+ }
36
+ },
37
+ \"reviewers\": [
38
+ {
39
+ \"uuid\": \"{2518e4c3-fc1d-4653-b355-c00be099ce6c}\"
40
+ }
41
+ ],
42
+ \"close_source_branch\": true
43
+ }"
@@ -46,91 +46,6 @@ pipelines:
46
46
  - docker
47
47
  branches:
48
48
  master:
49
- - step:
50
- image: fishawack/aws-runner
51
- runs-on:
52
- - self.hosted
53
- - linux
54
- - production
55
- size: 4x
56
- script:
57
- # Install lib deps
58
- - git submodule init && git submodule update
59
- # Install release deps
60
- - npm install -g semantic-release@24 @semantic-release/changelog@6 @semantic-release/git@10 conventional-changelog-conventionalcommits@8
61
- # Release version via node so can exit out when no release made
62
- - |
63
- node -e "const spawn = require('child_process').spawn('semantic-release', ['--repositoryUrl', 'https://$GIT_CREDENTIALS@bitbucket.org/$BITBUCKET_REPO_FULL_NAME'], { env: { ...process.env, FORCE_COLOR: true } }); spawn.stderr.on('data', d => process.stderr.write(d.toString())); spawn.stdout.on('data', d => {process.stdout.write(d.toString()); if(d.toString().includes('There are no relevant changes, so no new version is released.') || d.toString().includes('therefore a new version won\'t be published.')){process.exit(1);}})" || exit 0
64
- # Open PR to re-sync beta after release
65
- - |
66
- curl https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/pullrequests \
67
- -u $GIT_CREDENTIALS \
68
- --header 'Content-Type: application/json' \
69
- --data "{
70
- \"title\": \"fw-auto: sync beta after release\",
71
- \"source\": {
72
- \"branch\": {
73
- \"name\": \"master\"
74
- }
75
- },
76
- \"destination\": {
77
- \"branch\": {
78
- \"name\": \"beta\"
79
- }
80
- },
81
- \"reviewers\": [
82
- {
83
- \"uuid\": \"{2518e4c3-fc1d-4653-b355-c00be099ce6c}\"
84
- }
85
- ]
86
- }"
87
- # Commit and create pull request for new version on aws-runner repo
88
- - git config --global user.email "digital@fishawack.com"
89
- - git config --global user.name "Digital Fishawack"
90
- - git clone https://$GIT_CREDENTIALS@bitbucket.org/fishawackdigital/aws-runner
91
- - cd aws-runner
92
- - git checkout -b "$BITBUCKET_REPO_SLUG-$BITBUCKET_COMMIT" origin/development
93
- - sed -i -e "s/\(@fishawack\/lab-env@\).*/\1$(jq -r '.version' ../package.json)/g" Dockerfile
94
- - git add .
95
- - |
96
- git commit -m "build($BITBUCKET_REPO_SLUG): Bumped $BITBUCKET_REPO_SLUG"
97
- - git push origin "$BITBUCKET_REPO_SLUG-$BITBUCKET_COMMIT"
98
- - |
99
- curl https://api.bitbucket.org/2.0/repositories/fishawackdigital/aws-runner/pullrequests \
100
- -u $GIT_CREDENTIALS \
101
- --header 'Content-Type: application/json' \
102
- --data "{
103
- \"title\": \"Bumped $BITBUCKET_REPO_SLUG\",
104
- \"destination\": {
105
- \"branch\": {
106
- \"name\": \"development\"
107
- }
108
- },
109
- \"source\": {
110
- \"branch\": {
111
- \"name\": \"$BITBUCKET_REPO_SLUG-$BITBUCKET_COMMIT\"
112
- }
113
- },
114
- \"reviewers\": [
115
- {
116
- \"uuid\": \"{2518e4c3-fc1d-4653-b355-c00be099ce6c}\"
117
- }
118
- ],
119
- \"close_source_branch\": true
120
- }"
49
+ import: bitbucket-ci:v2.2.0-beta.4:master
121
50
  beta:
122
- - step:
123
- image: fishawack/aws-runner
124
- runs-on:
125
- - self.hosted
126
- - linux
127
- - production
128
- size: 4x
129
- script:
130
- # Install lib deps
131
- - git submodule init && git submodule update
132
- # Install release deps
133
- - npm install -g semantic-release@24 @semantic-release/changelog@6 @semantic-release/git@10 conventional-changelog-conventionalcommits@8
134
- # Release version via node so can exit out when no release made
135
- - |
136
- node -e "const spawn = require('child_process').spawn('semantic-release', ['--repositoryUrl', 'https://$GIT_CREDENTIALS@bitbucket.org/$BITBUCKET_REPO_FULL_NAME'], { env: { ...process.env, FORCE_COLOR: true } }); spawn.stderr.on('data', d => process.stderr.write(d.toString())); spawn.stdout.on('data', d => {process.stdout.write(d.toString()); if(d.toString().includes('There are no relevant changes, so no new version is released.') || d.toString().includes('therefore a new version won\'t be published.')){process.exit(1);}})" || exit 0
51
+ import: bitbucket-ci:v2.2.0-beta.4:beta
package/cli.js CHANGED
@@ -47,13 +47,13 @@ const args = hideBin(process.argv);
47
47
  "nuke",
48
48
  "lint",
49
49
  "workspace",
50
+ "npm",
50
51
  ],
51
52
 
52
53
  // Web development commands (for frameworks that build frontend assets)
53
54
  webDev: [
54
55
  "watch",
55
56
  "check",
56
- "npm",
57
57
  "reinstall",
58
58
  "install",
59
59
  "uninstall",
@@ -180,11 +180,51 @@ module.exports.frameworks = [
180
180
  name: "adonis",
181
181
  value: "adonis",
182
182
  },
183
+ {
184
+ name: "python",
185
+ value: "python",
186
+ },
183
187
  ];
184
188
 
185
189
  // Elasticbeanstlak configs based on preconfigurations
186
190
  module.exports.eb = {
187
191
  environments: {
192
+ python: {
193
+ shared: [],
194
+ low: [],
195
+ high: [
196
+ {
197
+ OptionName: "ELBScheme",
198
+ Value: "internal",
199
+ Namespace: "aws:ec2:vpc",
200
+ },
201
+ {
202
+ OptionName: "VPCId",
203
+ Value: "vpc-d30bcca8",
204
+ Namespace: "aws:ec2:vpc",
205
+ },
206
+ {
207
+ OptionName: "Subnets",
208
+ Value: "subnet-00bf5eda896fdd5c5,subnet-0aa7e40d4701683ae",
209
+ Namespace: "aws:ec2:vpc",
210
+ },
211
+ {
212
+ OptionName: "ELBSubnets",
213
+ Value: "subnet-00bf5eda896fdd5c5,subnet-0aa7e40d4701683ae",
214
+ Namespace: "aws:ec2:vpc",
215
+ },
216
+ {
217
+ OptionName: "AssociatePublicIpAddress",
218
+ Value: "false",
219
+ Namespace: "aws:ec2:vpc",
220
+ },
221
+ {
222
+ OptionName: "APP_ENV",
223
+ Value: "production",
224
+ Namespace: "aws:elasticbeanstalk:application:environment",
225
+ },
226
+ ],
227
+ },
188
228
  php: {
189
229
  shared: [],
190
230
  low: [],
@@ -618,6 +658,13 @@ module.exports.eb = {
618
658
  low: [],
619
659
  high: [],
620
660
  },
661
+ python: {
662
+ platform: "nginx",
663
+ language: "python",
664
+ shared: [],
665
+ low: [],
666
+ high: [],
667
+ },
621
668
  shared: [".ebextensions/misc/setvars.config"],
622
669
  low: [".ebextensions/misc/enable-https.config"],
623
670
  high: [
@@ -46,6 +46,20 @@ module.exports.createElasticBeanstalkEnvironment = async (
46
46
  },
47
47
  );
48
48
 
49
+ let stackName = "PHP 8.2";
50
+ switch (language) {
51
+ case "python":
52
+ stackName = "Python 3.13";
53
+ break;
54
+ case "node":
55
+ stackName = "Node.js 20";
56
+ break;
57
+ }
58
+
59
+ const SolutionStackName = solutions.SolutionStacks.filter((d) =>
60
+ d.includes(stackName),
61
+ )[0];
62
+
49
63
  await Spinner.prototype.simple(
50
64
  `Creating elasticbeanstalk environment ${name}`,
51
65
  () => {
@@ -53,12 +67,7 @@ module.exports.createElasticBeanstalkEnvironment = async (
53
67
  new CreateEnvironmentCommand({
54
68
  ApplicationName,
55
69
  EnvironmentName: name,
56
- SolutionStackName: solutions.SolutionStacks.filter((d) => {
57
- return language === "node"
58
- ? d.includes("Node.js 20")
59
- : d.includes("PHP 8.2") &&
60
- d.includes("Amazon Linux 2023");
61
- })[0],
70
+ SolutionStackName,
62
71
  OptionSettings,
63
72
  CNAMEPrefix,
64
73
  Tags: [{ Key: "client", Value: account }].concat(tags),
package/commands/run.js CHANGED
@@ -24,13 +24,6 @@ module.exports = [
24
24
  },
25
25
  (argv) => {
26
26
  if (_.platform === "python") {
27
- if (argv.command === "mail" || argv.command === "package") {
28
- console.log(
29
- `${argv.command} is a built-in command and will be ignored`,
30
- );
31
- return;
32
- }
33
-
34
27
  const command = argv.command.endsWith(".py")
35
28
  ? argv.command
36
29
  : `${argv.command}.py`;
package/commands/start.js CHANGED
@@ -15,22 +15,16 @@ module.exports = [
15
15
  const command = () =>
16
16
  _.command("core", `npm start -- -- ${argv.flags.join(" ")}`, true);
17
17
 
18
- if (
19
- _.platform === "laravel" ||
20
- _.platform === "wordpress" ||
21
- _.platform === "drupal" ||
22
- _.platform === "craftcms" ||
23
- _.platform === "adonis"
24
- ) {
25
- _.up(command);
26
- } else if (_.platform === "python") {
27
- _.command(
28
- "python",
29
- `uv run ./src/main.py -- -- ${argv.flags.join(" ")}`,
30
- true,
31
- );
32
- } else {
33
- command();
34
- }
18
+ _.up(() => {
19
+ if (_.platform === "python") {
20
+ _.command(
21
+ "python",
22
+ `uv run ./src/main.py -- -- ${argv.flags.join(" ")}`,
23
+ true,
24
+ );
25
+ } else {
26
+ command();
27
+ }
28
+ });
35
29
  },
36
30
  ];
package/globals.js CHANGED
@@ -8,6 +8,7 @@ const {
8
8
  copyFileSync,
9
9
  existsSync,
10
10
  readFileSync,
11
+ writeFileSync,
11
12
  cpSync,
12
13
  mkdirSync,
13
14
  } = require("fs");
@@ -126,6 +127,7 @@ var exec;
126
127
  var running;
127
128
  var services;
128
129
  var branch;
130
+ let vscodeSettings = {};
129
131
  var diagnosis = "4.0.0";
130
132
  var opts = { encoding: "utf8", stdio: "inherit", shell: "/bin/bash" };
131
133
  const users = {
@@ -280,6 +282,10 @@ if (composer && composer.require && composer.require["laravel/framework"]) {
280
282
  platform = "php";
281
283
  } else if (python) {
282
284
  platform = "python";
285
+
286
+ vscodeSettings["python.analysis.extraPaths"] = [
287
+ "${workspaceFolder}/.venv/lib/python3.13/site-packages",
288
+ ];
283
289
  } else {
284
290
  // Check for old wordpress repo stucture and show warning
285
291
  try {
@@ -613,6 +619,18 @@ if (version) {
613
619
  copyAIInstructionsFile("webdriverio-capture-v9");
614
620
  }
615
621
 
622
+ // Create .vscode/settings.json if it doesn't exist
623
+ const vscodeDir = path.join(cwd, ".vscode");
624
+ const vscodeSettingsPath = path.join(vscodeDir, "settings.json");
625
+
626
+ if (!existsSync(vscodeSettingsPath) && Object.keys(vscodeSettings).length) {
627
+ if (!existsSync(vscodeDir)) {
628
+ mkdirSync(vscodeDir, { recursive: true });
629
+ }
630
+
631
+ writeFileSync(vscodeSettingsPath, JSON.stringify(vscodeSettings, null, 4));
632
+ }
633
+
616
634
  // If docker-compose.yml exists in project _Docker folder append to end
617
635
  let localOverride = "";
618
636
  if (existsSync(path.join(cwd, "_Docker/docker-compose.yml"))) {
@@ -636,7 +654,7 @@ if (platform === "laravel") {
636
654
  } else if (platform === "php") {
637
655
  docker = `docker compose --env-file ${path.join(cwd, ".env")} -f ${__dirname}/php/8.2/docker-compose.yml ${localOverride} -p ${repoSafe}`;
638
656
  } else if (platform === "python") {
639
- docker = `docker compose -f ${__dirname}/python/0/docker-compose.yml ${localOverride} -p ${repoSafe}`;
657
+ docker = `docker compose -f ${__dirname}/python/0/docker-compose.yml ${core} ${localOverride} -p ${repoSafe}`;
640
658
  } else {
641
659
  docker = `docker compose ${core} ${localOverride} -p ${repoSafe}`;
642
660
  }
@@ -770,6 +788,12 @@ module.exports = {
770
788
  port: getPort.makeRange(9200, 9300),
771
789
  });
772
790
  }
791
+
792
+ if (platform === "python") {
793
+ process.env.PORT_PY = await getPort({
794
+ port: getPort.makeRange(8101, 8200),
795
+ });
796
+ }
773
797
  }
774
798
  },
775
799
  get() {
@@ -782,6 +806,8 @@ module.exports = {
782
806
  ports.db = { port: +process.env.PORT_DB };
783
807
  if (+process.env.PORT_ES)
784
808
  ports.es = { port: +process.env.PORT_ES };
809
+ if (+process.env.PORT_PY)
810
+ ports.es = { port: +process.env.PORT_PY };
785
811
 
786
812
  console.table(ports);
787
813
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fishawack/lab-env",
3
- "version": "4.45.1",
3
+ "version": "4.46.0-beta.2",
4
4
  "description": "Docker manager for FW",
5
5
  "main": "cli.js",
6
6
  "scripts": {
@@ -13,11 +13,11 @@ services:
13
13
  - PYTHONDONTWRITEBYTECODE="1"
14
14
  - PYTHONUNBUFFERED="1"
15
15
  - REPO=${REPO:-}
16
- - PORT=${PORT:-3000}
16
+ - PORT_PY=${PORT_PY:-8000}
17
17
  - USER_UID=${USER_UID:-0}
18
18
  - USER_GID=${USER_GID:-0}
19
19
  ports:
20
- - ${PORT:-3000}:${PORT:-3000}
20
+ - ${PORT_PY:-8000}:${PORT_PY:-8000}
21
21
  volumes:
22
22
  - $CWD/:/workspace
23
23
  networks:
@@ -1,136 +0,0 @@
1
- ## Changelog
2
-
3
- ### 1.8.0 (2025-08-10)
4
-
5
- #### Features
6
-
7
- * new env flag for remote browsers ([f313be6](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/f313be6cde14e05ac832b43127b6c5639fd62015))
8
-
9
- ### 1.8.0-beta.1 (2025-08-10)
10
-
11
- #### Features
12
-
13
- * new env flag for remote browsers ([f313be6](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/f313be6cde14e05ac832b43127b6c5639fd62015))
14
-
15
- ### 1.7.2 (2025-05-15)
16
-
17
- #### Bug Fixes
18
-
19
- * use n flag in symlink to override if symlink already exists ([cdc1a41](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/cdc1a41639785f65e2076477f33e86a8ea8cb8fa))
20
-
21
- ### 1.7.2-beta.1 (2025-05-15)
22
-
23
- #### Bug Fixes
24
-
25
- * use n flag in symlink to override if symlink already exists ([cdc1a41](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/cdc1a41639785f65e2076477f33e86a8ea8cb8fa))
26
-
27
- ### 1.7.1 (2025-05-15)
28
-
29
- #### Reverts
30
-
31
- * Revert "feat: installed husky npm module globally" ([91cc456](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/91cc4564ea2fd6650924732a2a75cb4a9fb749b5))
32
-
33
- ### 1.7.1-beta.1 (2025-05-14)
34
-
35
- #### Reverts
36
-
37
- * Revert "feat: installed husky npm module globally" ([91cc456](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/91cc4564ea2fd6650924732a2a75cb4a9fb749b5))
38
-
39
- ### 1.7.0 (2025-05-14)
40
-
41
- #### Features
42
-
43
- * installed husky npm module globally ([e08f5a7](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/e08f5a7850d0743137c26addf694f586c8c8ee74))
44
- * updated node from 20 to 22 ([e592f6e](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/e592f6e93fc6554227f8902c8c1c21a3564a32ce))
45
-
46
- ### 1.7.0-beta.1 (2025-05-14)
47
-
48
- #### Features
49
-
50
- * installed husky npm module globally ([e08f5a7](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/e08f5a7850d0743137c26addf694f586c8c8ee74))
51
- * updated node from 20 to 22 ([e592f6e](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/e592f6e93fc6554227f8902c8c1c21a3564a32ce))
52
-
53
- ### 1.6.0 (2024-10-22)
54
-
55
- #### Features
56
-
57
- * own global node_modules folder so local modules can be linked ([82f84fa](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/82f84faa5dfa7c009458bec4fe3a9f2b437c34bf))
58
-
59
- ### 1.5.2 (2024-10-08)
60
-
61
- #### Bug Fixes
62
-
63
- * rclone in alpine image and aws sdk back in full image as rclone used for s3 content ([9e68463](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/9e684631bb83c105aa9e5407e8fee30a788309cd))
64
-
65
- ### 1.5.1 (2024-10-07)
66
-
67
- #### Bug Fixes
68
-
69
- * move aws from full image to alpine now that s3 content requests are supported ([a947817](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/a94781756ea482545b63018e72ab30ce25727af9))
70
-
71
- ### 1.5.0 (2024-10-01)
72
-
73
- #### Features
74
-
75
- * commit into lab-env and create pull request against development on publish ([22e9c66](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/22e9c666dff1e6453090da472a6cd4f0b89c6fbb))
76
-
77
- #### Bug Fixes
78
-
79
- * close source branch by default on pull request ([5208373](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/5208373822272c648a547f9b328720cb4fdf9bd4))
80
-
81
- ### 1.4.2 (2024-10-01)
82
-
83
- #### Bug Fixes
84
-
85
- * trigger ci ([301d679](https://bitbucket.org/fishawackdigital/lab-env-core-1/commits/301d6795162f0bf8941a3b9413a30092a3e8bf21))
86
-
87
- ### 1.4.1 (2024-07-17)
88
- * [fix] set global var for git across file system so git avail in mounted volumes i.e node_modules
89
-
90
- ### 1.4.0 (2024-06-04)
91
- * [feat] bumped node from 18 to 20
92
-
93
- ### 1.3.3 (2024-02-09)
94
- * [fix] symlink wine64 now htat wine is the default global command but electron expects wine64
95
-
96
- ### 1.3.2 (2024-01-24)
97
- * [fix] install latest eb cli and use node images python rather than pyenv
98
-
99
- ### 1.3.1 (2024-01-22)
100
- * [fix] rebuild of image to get the latest chromium version to fix new puppeteer headless mode
101
-
102
- ### 1.3.0 (2023-03-17)
103
- * [feat] node user is now added to www-data group for easier file permission management
104
- * [fix] disable npm message about update being available
105
-
106
- ### 1.2.2 (2023-02-25)
107
- * [fix] set BRANCH and CI_COMMIT_REF_NAME env variables in container
108
- * [fix] installed git-branch to fetch the current branch for deployment targets
109
- * [refactor] moved global node module symlinking to alpine image for future use
110
-
111
- ### 1.2.1 (2023-02-25)
112
- * [fix] install eb cli into root of image rather than root user directory
113
- * [perf] dont recurse and dont change group of node_modules to speed up command
114
- * [refactor] set node git flag without switching user directly in dockerfile
115
-
116
- ### 1.1.4 (2023-02-23)
117
- * [Fix] Installed missing are-you-es5 global npm module
118
- * [Fix] Installed missing check-dependencies global npm module
119
-
120
- ### 1.1.3 (2023-02-23)
121
- * [Fix] Switch to ENV for $PATH updates to avoid shell profile loading issues
122
- * [Fix] Moved chromium to alpine image as its needed for svg tasks and testing
123
-
124
- ### 1.1.2 (2023-02-22)
125
- * [Fix] cd into $PWD after su command or we'll start in users home directory
126
-
127
- ### 1.1.1 (2023-02-22)
128
- * [Fix] Use -l login flag for su command for both non interactive and interactive shells
129
- * [Fix] Switch $PATH writes to .profile so they are executed on non interactive shells
130
-
131
- ### 1.1.0 (2023-02-22)
132
- * [Feature] Watertight now baked into image so not needed in package.json of projects
133
- * [Fix] lftp installed in alpine image as it's needed for content tasks
134
-
135
- ### 1.0.0 (2023-02-21)
136
- * [Misc] initial commit
package/core/1/Dockerfile DELETED
@@ -1,113 +0,0 @@
1
- #####
2
- # Alpine image
3
- #####
4
-
5
- FROM node:22 AS alpine
6
-
7
- LABEL org.opencontainers.image.authors="Mike Mellor <mike.mellor@avalerehealth.com>"
8
-
9
- ARG TARGETARCH
10
-
11
- WORKDIR /app
12
-
13
- EXPOSE 3000
14
- EXPOSE 3001
15
-
16
- # Get latest apt-get
17
- RUN apt-get update
18
-
19
- # Update npm to latest
20
- RUN npm install -g npm@latest
21
-
22
- # Install dart sass vm (arch switch)
23
- RUN curl -L -o /sass.tar.gz https://github.com/sass/dart-sass/releases/download/1.57.1/dart-sass-1.57.1-linux-$(if [ "$TARGETARCH" = "arm64" ]; then echo 'arm64'; else echo 'x64'; fi).tar.gz
24
- RUN tar -xf /sass.tar.gz -C /
25
- ENV PATH="${PATH}:/dart-sass/"
26
- RUN rm -rf /sass.tar.gz
27
-
28
- # Set safe directory to remove intel errors when running git rev-parse
29
- RUN su node -c "git config --global --add safe.directory /app"
30
-
31
- # Also set global git flag for allowing access across filesystems for mounted node_modules dir
32
- ENV GIT_DISCOVERY_ACROSS_FILESYSTEM=1
33
-
34
- # Disable npm message about updates being available
35
- RUN su node -c "npm config set update-notifier false"
36
-
37
- # Add node user to www-data group
38
- RUN usermod -a -G www-data node
39
-
40
- # Install lftp
41
- RUN apt-get install -y lftp
42
-
43
- # Install chromium
44
- RUN apt-get install -y chromium fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 --no-install-recommends
45
- # Stop Puppeteer downloading browsers during npm install
46
- ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
47
- ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
48
-
49
- # Install package.json checker
50
- RUN npm install check-dependencies -g
51
-
52
- # Install node_modules checker
53
- RUN npm install are-you-es5 -g
54
-
55
- # Install git branch fetcher
56
- RUN npm install git-branch -g
57
-
58
- # Link root global node_modules to ~/.node_modules
59
- RUN ln -s /usr/local/lib/node_modules/ /home/node/.node_modules
60
-
61
- # Install rclone
62
- RUN curl https://rclone.org/install.sh | bash
63
-
64
- # Cleanup apt-get install folders
65
- RUN apt-get clean && \
66
- rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
67
-
68
- COPY entrypoint.sh /bin/entrypoint.sh
69
- RUN chmod +x /bin/entrypoint.sh
70
- ENTRYPOINT ["/bin/entrypoint.sh"]
71
-
72
- #####
73
- # Full image
74
- #####
75
-
76
- FROM alpine AS full
77
-
78
- # Get latest apt-get
79
- RUN apt-get update
80
-
81
- # Install ghostscript
82
- RUN apt-get install -y ghostscript
83
-
84
- # Install zip
85
- RUN apt-get install zip
86
-
87
- # Install AWS Elastic Beanstalk cli
88
- ENV PATH="${PATH}:/.ebcli-virtual-env/executables"
89
- RUN apt-get -y install python-is-python3 python3-pip && \
90
- pip install virtualenv --break-system-packages && \
91
- git clone https://github.com/aws/aws-elastic-beanstalk-cli-setup.git ~/aws-eb && \
92
- python ~/aws-eb/scripts/ebcli_installer.py --location / && \
93
- rm -rf ~/aws-eb
94
-
95
- # Install AWS-CLI@2 (arch switch)
96
- RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-$(if [ "$TARGETARCH" = "arm64" ]; then echo 'aarch64'; else echo 'x86_64'; fi).zip" -o "awscliv2.zip"
97
- RUN unzip awscliv2.zip
98
- RUN ./aws/install
99
- RUN rm -rf ./aws && rm -rf awscliv2.zip
100
-
101
- # Update electron globally
102
- RUN npm install -g electron-packager@latest
103
-
104
- # Install wine64
105
- RUN apt-get install -y wine64 && \
106
- ln -s /usr/bin/wine /usr/bin/wine64
107
-
108
- # Install watertight
109
- RUN --mount=type=ssh npm install -g git+ssh://git@bitbucket.org/fishawackdigital/watertight-node-auto.git#v6.0.0
110
-
111
- # Cleanup apt-get install folders
112
- RUN apt-get clean && \
113
- rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
package/core/1/README.md DELETED
@@ -1,9 +0,0 @@
1
- ## Background
2
-
3
- ### What
4
-
5
- The image used for core@8 and above.
6
-
7
- ### Why
8
-
9
- Allows us to automate the local developer & CI environments.
@@ -1,82 +0,0 @@
1
- definitions:
2
- services:
3
- docker:
4
- image: docker:dind
5
- memory: 12288
6
-
7
- pipelines:
8
- branches:
9
- master:
10
- - step:
11
- image: fishawack/aws-runner
12
- runs-on:
13
- - self.hosted
14
- - linux
15
- - production
16
- size: 4x
17
- script:
18
- # Install release deps
19
- - npm install -g semantic-release@24 @semantic-release/changelog@6 @semantic-release/git@10 conventional-changelog-conventionalcommits@8
20
- # Release version via node so can exit out when no release made
21
- - |
22
- node -e "const spawn = require('child_process').spawn('semantic-release', ['--repositoryUrl', 'https://$GIT_CREDENTIALS@bitbucket.org/$BITBUCKET_REPO_FULL_NAME'], { env: { ...process.env, FORCE_COLOR: true } }); spawn.stderr.on('data', d => process.stderr.write(d.toString())); spawn.stdout.on('data', d => {process.stdout.write(d.toString()); if(d.toString().includes('There are no relevant changes, so no new version is released.') || d.toString().includes('therefore a new version won\'t be published.')){process.exit(1);}})" || exit 0
23
- # Copy ssh keys so physical files exist for agent to use
24
- - cp /build/*/ssh/* ~/.ssh/
25
- # Start ssh agent and add all (if any) keys
26
- - eval `ssh-agent` && ssh-add || true
27
- # Publish docker image
28
- - docker login $DOCKER_CREDENTIALS && docker buildx create --use && npm run image
29
- # Sync beta after publish
30
- - git config --global user.email "digital@fishawack.com"
31
- - git config --global user.name "Digital Fishawack"
32
- - git fetch origin "+refs/heads/*:refs/remotes/origin/*" && git checkout beta && git merge master && git push origin beta
33
- # Commit and create pull request for new version on lab-env repo
34
- - git clone https://$GIT_CREDENTIALS@bitbucket.org/fishawackdigital/lab-env
35
- - cd lab-env
36
- - git checkout -b "$BITBUCKET_REPO_SLUG-$BITBUCKET_COMMIT" origin/beta
37
- - git submodule init
38
- - git submodule update
39
- - git submodule update --remote --merge core/1
40
- - git add .
41
- - |
42
- git commit --allow-empty -m "build(core/1): Bumped $BITBUCKET_REPO_SLUG"
43
- - git push origin "$BITBUCKET_REPO_SLUG-$BITBUCKET_COMMIT"
44
- - |
45
- curl https://api.bitbucket.org/2.0/repositories/fishawackdigital/lab-env/pullrequests \
46
- -u $GIT_CREDENTIALS \
47
- --header 'Content-Type: application/json' \
48
- --data "{
49
- \"title\": \"Bumped $BITBUCKET_REPO_SLUG\",
50
- \"destination\": {
51
- \"branch\": {
52
- \"name\": \"beta\"
53
- }
54
- },
55
- \"source\": {
56
- \"branch\": {
57
- \"name\": \"$BITBUCKET_REPO_SLUG-$BITBUCKET_COMMIT\"
58
- }
59
- },
60
- \"reviewers\": [
61
- {
62
- \"uuid\": \"{2518e4c3-fc1d-4653-b355-c00be099ce6c}\"
63
- }
64
- ],
65
- \"close_source_branch\": true
66
- }"
67
- services:
68
- - docker
69
- beta:
70
- - step:
71
- image: fishawack/aws-runner
72
- runs-on:
73
- - self.hosted
74
- - linux
75
- - production
76
- size: 4x
77
- script:
78
- # Install deps
79
- - npm install -g semantic-release@24 @semantic-release/changelog@6 @semantic-release/git@10 conventional-changelog-conventionalcommits@8
80
- # Release version via node so can exit out when no release made
81
- - |
82
- node -e "const spawn = require('child_process').spawn('semantic-release', ['--repositoryUrl', 'https://$GIT_CREDENTIALS@bitbucket.org/$BITBUCKET_REPO_FULL_NAME'], { env: { ...process.env, FORCE_COLOR: true } }); spawn.stderr.on('data', d => process.stderr.write(d.toString())); spawn.stdout.on('data', d => {process.stdout.write(d.toString()); if(d.toString().includes('There are no relevant changes, so no new version is released.') || d.toString().includes('therefore a new version won\'t be published.')){process.exit(1);}})" || exit 0
@@ -1,37 +0,0 @@
1
- services:
2
- core:
3
- build:
4
- context: $FW_CORE_1_CONTEXT
5
- target: $FW_CORE_1_TARGET
6
- ssh:
7
- - default
8
- args:
9
- target: $FW_CORE_1_TARGET
10
- target_image: $FW_CORE_1_TARGET_IMAGE
11
- image: $FW_CORE_1_IMAGE:${FW_CORE_1_VERSION:-latest}
12
- init: true
13
- tty: true
14
- volumes:
15
- - $CWD/:/app
16
- - $FW_DIR/targets:/home/node/targets
17
- - $FW_DIR/.ssh:/home/node/.ssh
18
- - $FW_DIR/.aws:/home/node/.aws
19
- - node_modules:/app/node_modules
20
- ports:
21
- - ${PORT:-3000}:${PORT:-3000}
22
- - ${PORT_OPT:-3001}:${PORT_OPT:-3001}
23
- environment:
24
- - REPO=${REPO:-}
25
- - PORT=${PORT:-3000}
26
- - PORT_OPT=${PORT_OPT:-3001}
27
- - PORT_WEB=${PORT_WEB:-8000}
28
- - PORT_DB=${PORT_DB:-3306}
29
- - USER_UID=${USER_UID:-0}
30
- - USER_GID=${USER_GID:-0}
31
- - FW_ROOT=${FW_ROOT:-}
32
- - BRANCH=${BRANCH:-}
33
- - CI_COMMIT_REF_NAME=${CI_COMMIT_REF_NAME:-}
34
- - REMOTE_BROWSERS=${REMOTE_BROWSERS:-chrome}
35
- volumes:
36
- node_modules:
37
- driver: "local"
@@ -1,24 +0,0 @@
1
- #!/bin/bash
2
-
3
- # Setting $FW_ROOT will bypass the user switch to node
4
- if [ -z "$FW_ROOT" ]; then
5
- # Set node user id to match host users id so no permission issues outside of docker
6
- usermod -u $USER_UID node &>/dev/null
7
-
8
- # Own the node_modules folder otherwise it'll be owned by root/previous node id which will prevent writing
9
- chown node /app/node_modules
10
-
11
- # Own the global node_modules folder otherwise it'll be owned by root/previous node id which will prevent writing
12
- chown node /usr/local/lib/node_modules
13
-
14
- # Default arguments will always be bash -l, if nothing follows this just start an non login interactive shell
15
- if [ -z "${@:3}" ]; then
16
- exec su node
17
- # Otherwise pipe the command after the bash -lc into the non login non interactive shell as a command to exec
18
- else
19
- exec su node -c "${@:3}"
20
- fi
21
- else
22
- echo "Accessing as root"
23
- exec "$@"
24
- fi
@@ -1,47 +0,0 @@
1
- {
2
- "name": "core",
3
- "version": "1.8.0",
4
- "description": "lab-env docker config for the @fishawack/core/1 npm module",
5
- "scripts": {
6
- "setup": "ln -sfn ../../.commitlintrc.json .commitlintrc.json && ln -sfn ../../.editorconfig .editorconfig && ln -sfn ../../.prettierignore .prettierignore && ln -sfn ../../.husky/ .husky && husky &>/dev/null || true",
7
- "image": "docker buildx build --ssh default --platform linux/amd64,linux/arm64 -t fishawack/lab-env-core-1:$npm_package_version -t fishawack/lab-env-core-1:latest --push . && docker buildx build --ssh default --target alpine --platform linux/amd64,linux/arm64 -t fishawack/lab-env-core-1-alpine:$npm_package_version -t fishawack/lab-env-core-1-alpine:latest --push ."
8
- },
9
- "author": "Mike Mellor",
10
- "license": "ISC",
11
- "release": {
12
- "plugins": [
13
- [
14
- "@semantic-release/commit-analyzer",
15
- {
16
- "preset": "conventionalcommits"
17
- }
18
- ],
19
- [
20
- "@semantic-release/release-notes-generator",
21
- {
22
- "preset": "conventionalcommits",
23
- "writerOpts": {
24
- "headerPartial": "### {{version}} ({{date}})\n",
25
- "mainTemplate": "{{> header}}\n{{#each commitGroups}}\n\n{{#if title}}\n#### {{title}}\n\n{{/if}}\n{{#each commits}}\n{{> commit root=@root}}\n{{/each}}\n{{/each}}"
26
- },
27
- "presetConfig": {
28
- "commitUrlFormat": "{{host}}/{{owner}}/{{repository}}/commits/{{hash}}"
29
- }
30
- }
31
- ],
32
- [
33
- "@semantic-release/changelog",
34
- {
35
- "changelogTitle": "## Changelog"
36
- }
37
- ],
38
- [
39
- "@semantic-release/npm",
40
- {
41
- "npmPublish": false
42
- }
43
- ],
44
- "@semantic-release/git"
45
- ]
46
- }
47
- }