@suffolklitlab/alkiln 5.0.2-feat-github-server-9 → 5.0.2-feat-github-server-11

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.
@@ -28,8 +28,9 @@ jobs:
28
28
  node-version: [18.x]
29
29
 
30
30
  env:
31
- USER1_EMAIL: admin@example.com
32
- USER1_PASSWORD: password
31
+ # USER1_EMAIL: admin@example.com
32
+ # USER1_PASSWORD: "@12lsdnejewng"
33
+ # How would a dev make another user/password if they wanted to?
33
34
  SECRET_VAR1: secret-var1-value
34
35
  SECRET_VAR2: secret-var2-value
35
36
  SECRET_FOR_MISSING_FIELD: secret for missing field
@@ -50,6 +51,16 @@ jobs:
50
51
  CONFIG_CONTENTS: "${{ secrets.CONFIG_CONTENTS }}"
51
52
  - run: echo "Finished starting the GitHub server"
52
53
 
54
+ - name: Set more env vars
55
+ run: |
56
+ echo "USER1_EMAIL=${{ steps.github_server.outputs.DA_ADMIN_EMAIL }}" >> $GITHUB_ENV
57
+ echo "USER1_PASSWORD=${{ steps.github_server.outputs.DA_ADMIN_PASSWORD }}" >> $GITHUB_ENV
58
+ - name: Work with docker
59
+ run: |
60
+ # Authors can use this to do more with the docker container
61
+ container_name=$(docker ps --format '{{.Names}}' | head -n 1)
62
+ echo "container_name is $container_name"
63
+
53
64
  - name: "Run ALKiln tests"
54
65
  if: ${{ success() }}
55
66
  uses: ./
@@ -58,6 +69,6 @@ jobs:
58
69
  DOCASSEMBLE_DEVELOPER_API_KEY: "${{ steps.github_server.outputs.DOCASSEMBLE_DEVELOPER_API_KEY }}"
59
70
  INSTALL_METHOD: "server"
60
71
  # TODO: See what happens if this is an empty string
61
- ALKILN_VERSION: "5.0.2-feat-github-server-9"
72
+ ALKILN_VERSION: "5.0.2-feat-github-server-11"
62
73
  - run: echo "Finished running ALKiln tests"
63
74
 
package/action.yml CHANGED
@@ -75,7 +75,7 @@ runs:
75
75
  # Install on server
76
76
  - name: "ALKiln: Install the GitHub package onto the server"
77
77
  if: ${{ inputs.INSTALL_METHOD == 'server' }}
78
- run: alkiln-startserver
78
+ run: alkiln-server-install
79
79
  shell: bash
80
80
  - run: echo -e "\n\n====\nALKiln could not install the package on the temporary GitHub docassemble server. Check the steps above this line.\n\n"
81
81
  if: ${{ inputs.INSTALL_METHOD == 'server' && failure() }}
@@ -88,7 +88,7 @@ runs:
88
88
  - name: "ALKiln: Run tests"
89
89
  if: ${{ success() }}
90
90
  # run: alkiln-run @e6 or @al1
91
- run: alkiln-run @al1
91
+ run: alkiln-run @e6
92
92
  shell: bash
93
93
 
94
94
  # run: alkiln-run ${{ github.event.inputs.tags && format('{0}', github.event.inputs.tags) }}
@@ -1,12 +1,16 @@
1
1
  name: "ALKiln/github_server: Isolated docassemble tests"
2
2
  description: "Download and start up a temporary docassemble server on GitHub's servers, in an isolated environment. Avoids docassemble reload errors and other external factors."
3
3
 
4
- # Wat? Exit with 52?
4
+ # Wat? Exit with 52
5
5
  # https://github.com/SuffolkLITLab/ALKiln/actions/runs/5912900256/job/16036751264#step:4:188
6
6
  # Had no completion messages, but it exited with an error anyway
7
7
  # Took 121 seconds
8
8
  # The rerun of the test completed that step just fine, though it took less time
9
9
  # Took 120 and was fine: https://github.com/SuffolkLITLab/ALKiln/actions/runs/5913167036/job/16037288791
10
+ # 150 secs with exit code 56:
11
+ # https://github.com/SuffolkLITLab/ALKiln/actions/runs/5914677262/job/16040233419#step:4:196
12
+ # 120 sec with exit code 56:
13
+ # https://github.com/SuffolkLITLab/ALKiln/actions/runs/5914963614/job/16040773624#step:4:206
10
14
 
11
15
  inputs:
12
16
  CONFIG_CONTENTS:
@@ -24,30 +28,40 @@ outputs:
24
28
  SERVER_URL:
25
29
  description: "Use this inside `with:` for the ALKiln step. URL of the temporary docassemble server."
26
30
  value: "http://localhost"
31
+ DA_ADMIN_EMAIL:
32
+ value: ${{ steps.api_key_output_step.outputs.DA_ADMIN_EMAIL }}
33
+ DA_ADMIN_PASSWORD:
34
+ value: ${{ steps.api_key_output_step.outputs.DA_ADMIN_PASSWORD }}
27
35
 
28
36
 
29
37
  runs:
30
38
  using: "composite"
31
39
  steps:
32
- - name: "github_server: Set environment variables"
40
+ - name: "ALKiln github_server: Set environment variables"
33
41
  run: |
34
42
  echo "DA_ADMIN_API_KEY=abcd1234abcd1234abcd5678abdc5678" >> $GITHUB_ENV
35
43
  echo "MAX_SECONDS_FOR_DOCKER=${{ inputs.MAX_SECONDS_FOR_DOCKER }}" >> $GITHUB_ENV
36
44
  echo "CLONE_URL=${{ github.server_url }}/${{ github.repository }}.git" >> $GITHUB_ENV
37
45
  echo "OWNER_AND_REPO_NAME=${{ github.repository }}" >> $GITHUB_ENV
38
46
  echo "BRANCH_REF=${{ github.ref }}" >> $GITHUB_ENV
47
+ echo "DA_ADMIN_EMAIL=admin@example.com" >> $GITHUB_ENV
48
+ # Login will fail if this is "password"
49
+ echo "DA_ADMIN_PASSWORD=@123abcdefg" >> $GITHUB_ENV
39
50
  shell: bash
40
51
  - id: api_key_output_step
41
- run: echo "::set-output name=DOCASSEMBLE_DEVELOPER_API_KEY::$DA_ADMIN_API_KEY"
52
+ run: |
53
+ echo "::set-output name=DOCASSEMBLE_DEVELOPER_API_KEY::$DA_ADMIN_API_KEY"
54
+ echo "::set-output name=DA_ADMIN_EMAIL::$DA_ADMIN_EMAIL"
55
+ echo "::set-output name=DA_ADMIN_PASSWORD::$DA_ADMIN_PASSWORD"
42
56
  shell: bash
43
- - name: "github_server: Download and start docker"
57
+ - name: "ALKiln github_server: Download and start docker"
44
58
  run: |
45
59
  mkdir /tmp/config
46
- echo "${{ inputs.CONFIG_CONTENTS }}" > /tmp/config/myconfig.yml
60
+ echo "${{ inputs.CONFIG_CONTENTS }}" > /tmp/config/myconfig.yml
47
61
  docker pull jhpyle/docassemble
48
- docker run --env DA_ADMIN_EMAIL="admin@example.com" --env DA_ADMIN_PASSWORD="password" --env DA_ADMIN_API_KEY="${{ env.DA_ADMIN_API_KEY }}" --env DA_CONFIG=/tmp/config/myconfig.yml --volume /tmp/config:/tmp/config --cap-add SYS_PTRACE --memory="4gb" -d -p 80:80 jhpyle/docassemble
62
+ docker run --env DA_ADMIN_EMAIL="${{ env.DA_ADMIN_EMAIL }}" --env DA_ADMIN_PASSWORD="${{ env.DA_ADMIN_PASSWORD }}" --env DA_ADMIN_API_KEY="${{ env.DA_ADMIN_API_KEY }}" --env DA_CONFIG=/tmp/config/myconfig.yml --volume /tmp/config:/tmp/config --cap-add SYS_PTRACE --memory="4gb" -d -p 80:80 jhpyle/docassemble
49
63
  shell: bash
50
- - name: "github_server: Wait for server to start"
64
+ - name: "ALKiln github_server: Wait for server to start"
51
65
  run: |
52
66
  # github_server: Wait for server to start
53
67
 
@@ -86,7 +100,8 @@ runs:
86
100
  done
87
101
  shell: bash
88
102
 
89
- - name: Install the package
103
+ - name: "ALKiln github_server: Install the package"
104
+ id: container_output_step
90
105
  run: |
91
106
  echo "CLONE_URL is $CLONE_URL"
92
107
  git clone $CLONE_URL
@@ -108,17 +123,25 @@ runs:
108
123
  cd ..
109
124
  pip install docassemblecli
110
125
  dainstall $repo_name --apiurl http://localhost --apikey $DA_ADMIN_API_KEY
111
-
112
- ## Below here is just for development
113
- #container_name=$(docker ps --format '{{.Names}}' | head -n 1)
114
- #echo $container_name
115
- #docker exec -it "$container_name /bin/bash"
116
- #echo "ls /usr/share/docassemble/local3.10/lib/python3.10/site-packages/docassemble"
117
126
  shell: bash
118
127
 
119
- - name: Docker logs
128
+ # Upload artifacts that subscribers can download on the Actions summary page
129
+ - name: "ALKiln github_server: Docker logs"
120
130
  if: ${{ always() }}
121
- # TODO: create an arifact for this instead
122
131
  run: |
123
- docker logs $(docker ps --filter "ancestor=jhpyle/docassemble" --format {{.ID}})
132
+ docker_logs=$(docker logs $(docker ps --filter "ancestor=jhpyle/docassemble" --format {{.ID}}))
133
+ # Should this name have a date/time attached? The logs themselves have timestamps
134
+ echo "$docker_logs" > /tmp/alkiln_docker_logs.txt
124
135
  shell: bash
136
+
137
+ # Should this date/time be created at the start of this action?
138
+ - name: "ALKiln github_server: Get folder name with date and time"
139
+ run: |
140
+ echo "GITHUB_SERVER_ARTIFACT_NAME=alkiln-github-server-$(date +'%Y-%m-%d at %Hh%Mm%Ss' -u)UTC" >> $GITHUB_ENV
141
+ shell: bash
142
+ - name: "ALKiln github_server: Upload artifacts folder"
143
+ if: ${{ always() }}
144
+ uses: actions/upload-artifact@v3
145
+ with:
146
+ name: ${{ env.GITHUB_SERVER_ARTIFACT_NAME }}
147
+ path: /tmp/alkiln_docker_logs.txt
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+
3
+ //const da_i = require('./docassemble_api_interface');
4
+ const session_vars = require('../utils/session_vars');
5
+
6
+ const server_install = async () => {
7
+ // let task_id = await da_i.install_on_server();
8
+ // if (task_id) {
9
+ // console.log("Waiting...")
10
+ // await da_i.wait_for_package_to_restart(task_id);
11
+ // }
12
+ // console.log("Done!")
13
+
14
+ session_vars.save_install_type("server");
15
+
16
+ }; // Ends server_install();
17
+
18
+ server_install();
package/lib/utils/log.js CHANGED
@@ -42,7 +42,7 @@ log.error = function ({ type='', pre='', data='', post='' }) {
42
42
 
43
43
  log.debug = function ({ type='', pre='', data='', post='' }) {
44
44
  /* If debugging is turned on, log a message that includes `ALKiln` and `debug` */
45
- if ( session_vars.get_debug() ) {
45
+ if ( session_vars.get_debug() || session_vars.get_dangerous_debug() ) {
46
46
  let start = create_msg_start([ type, 'debug' ], pre );
47
47
  // Log them each on a separate line
48
48
  console.log( `ALKiln ${ type } debug: ${ pre }` );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@suffolklitlab/alkiln",
3
- "version": "5.0.2-feat-github-server-9",
3
+ "version": "5.0.2-feat-github-server-11",
4
4
  "description": "Integrated automated end-to-end testing with docassemble, puppeteer, and cucumber.",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -9,7 +9,7 @@
9
9
  "local": "npm run setup && npm run cucumber; npm run takedown",
10
10
  "setup": "./lib/docassemble/setup.js",
11
11
  "takedown": "./lib/docassemble/takedown.js",
12
- "startserver": "./lib/docassemble/startserver.js",
12
+ "server_install": "./lib/docassemble/server_install.js",
13
13
  "unit": "mocha tests/unit_tests/*.test.*"
14
14
  },
15
15
  "repository": {
@@ -48,7 +48,7 @@
48
48
  "uuid": "8.3.2"
49
49
  },
50
50
  "bin": {
51
- "alkiln-startserver": "./lib/docassemble/startserver.js",
51
+ "alkiln-server-install": "./lib/docassemble/server_install.js",
52
52
  "alkiln-setup": "./lib/docassemble/setup.js",
53
53
  "alkiln-takedown": "./lib/docassemble/takedown.js",
54
54
  "alkiln-run": "./lib/run_cucumber.js"
package/setup.py CHANGED
@@ -53,7 +53,7 @@ setup(name='docassemble.ALKiln',
53
53
  url='https://suffolklitlab.org/docassemble-AssemblyLine-documentation/docs/automated_integrated_testing',
54
54
  packages=find_packages(),
55
55
  namespace_packages=['docassemble'],
56
- install_requires=['docassemble.ALToolbox>=0.5.1'],
56
+ install_requires=['docassemble.ALToolbox>=0.8.2', 'docassemble.AssemblyLine>=2.24.0'],
57
57
  zip_safe=False,
58
58
  package_data=find_package_data(where='docassemble/ALKiln/', package='docassemble.ALKiln'),
59
59
  )
@@ -1,69 +0,0 @@
1
- #!/usr/bin/env node
2
- const puppeteer = require('puppeteer');
3
- const da_i = require('./docassemble_api_interface');
4
- const session_vars = require('../utils/session_vars');
5
-
6
- const fs = require('fs')
7
-
8
- const startserver = async () => {
9
- // Open the browser, login with env var creds
10
- /*
11
- let browser = await puppeteer.launch({headless: !session_vars.get_debug()})
12
- let page = await browser.newPage();
13
- // Go to the sign in page
14
- let login_url = `${ session_vars.get_da_server_url() }/user/sign-in`;
15
- try {
16
- // puppeteer will ensure proper timeout.
17
- await page.goto( login_url, { waitUntil: `domcontentloaded`, timeout: 3000 });
18
- await page.waitForSelector( `.dabody` );
19
- } catch ( error ) {
20
- let err_msg = `Error occurred when ALKiln tried to go to "${ login_url }: ${ error }".`
21
- console.log(err_msg);
22
- throw error;
23
- }
24
-
25
- let email = process.env[ "DA_ADMIN_API_KEY" ];
26
- let password = process.env[ "USER_PASSWORD" ];
27
-
28
- // Try to log in
29
- await page.type( `#email`, email );
30
- await page.type( `#password`, password );
31
- let elem = await page.$( `button[name="submit"]` );
32
- await elem.click();
33
- await page.waitForNavigation({waitUntil: 'domcontentloaded'});
34
-
35
- // Wait to see the success message.
36
- // This is a bit of an assumption and needs success and failure testing
37
- // TODO: use a Promise.race to fail faster.
38
- await page.waitForSelector( `.datopcenter .alert-success` );
39
- // make an API key
40
-
41
- // TODO(brycew): with or without the API key?
42
- // Install the package in order to also install all of its dependencies
43
- let api_key_url = `${ session_vars.get_da_server_url() }/manage_api?action=new`;
44
- await page.goto( api_key_url, { waitUntil: `domcontentloaded`, timeout: 3000 });
45
- await page.type( `#name`, "ALKiln tmp key");
46
- await page.select( `#method`, "none");
47
- let winner = await Promise.all([page.click(`#submit`), page.waitForNavigation({waitUntil: 'domcontentloaded'})]);
48
- console.log(`submitted`);
49
- const api_text = await page.$eval('body p code', elem => elem.innerText);
50
- process.env.DOCASSEMBLE_DEVELOPER_API_KEY = api_text;
51
- console.log(`api key: ${api_text}`);
52
- let file = fs.writeFileSync( ".tmpenv", `export DOCASSEMBLE_DEVELOPER_API_KEY=${api_text}`);
53
-
54
- await page.goto(`${ session_vars.get_da_server_url() }/user/sign-out`, {waitUntil: `domcontentloaded`});
55
- console.log(`signed out`);
56
- await browser.close();
57
- */
58
-
59
- // let task_id = await da_i.install_on_server();
60
- // if (task_id) {
61
- // console.log("Waiting...")
62
- // await da_i.wait_for_package_to_restart(task_id);
63
- // }
64
- // console.log("Done!")
65
- session_vars.save_install_type("server");
66
-
67
- }; // Ends startserver();
68
-
69
- startserver();