Commit Graph

53 Commits

Author SHA1 Message Date
Jill Regan
75acf919f3 Disable linting warning 2026-02-22 12:39:07 -05:00
Jill Regan
c4aeeff620 Merge branch 'jill/migrate-to-connect-sdk' into jill/handle-open-ssh-keys 2026-02-22 12:37:44 -05:00
Jill Regan
44af64418a Update unit test 2026-02-22 12:37:21 -05:00
Jill Regan
50fb695a57 Merge branch 'jill/validate-secret-reference' into jill/migrate-to-connect-sdk 2026-02-22 12:32:39 -05:00
Jill Regan
dc90451a94 Apply code suggestions 2026-02-22 12:31:37 -05:00
Jill Regan
e7517d7b3e Add handeling for open ssh format 2026-02-22 12:20:59 -05:00
Jill Regan
db4ac8464b Create client helper 2026-02-22 11:38:06 -05:00
Jill Regan
5523b3fd67 Remove error handeling 2026-02-20 18:19:18 -05:00
Jill Regan
44ef890925 Fix syntax error 2026-02-20 18:06:37 -05:00
Jill Regan
d7959a3396 Add retry 2026-02-20 18:03:59 -05:00
Jill Regan
e5946f890f Add more robust logging 2026-02-20 17:56:04 -05:00
Jill Regan
6afd0621a7 Test to see why get file content failed 2026-02-20 17:53:22 -05:00
Jill Regan
72c110fb96 Try mroe logging 2026-02-20 17:50:24 -05:00
Jill Regan
b590204659 Try nested error logging 2026-02-20 17:47:00 -05:00
Jill Regan
6490b7af0e Increase tiemout 2026-02-20 17:43:00 -05:00
Jill Regan
676313036e Add error handeling 2026-02-20 17:14:24 -05:00
Jill Regan
3c643fe809 Code clean up and add tests 2026-02-20 15:59:25 -05:00
Jill Regan
cc33b584d1 Update formatting 2026-02-20 10:44:46 -05:00
Jill Regan
21385b0c31 Add e2e test 2026-02-20 10:43:17 -05:00
Jill Regan
2a0e01171e Add query for vault id first 2026-02-20 09:35:27 -05:00
Jill Regan
8f91e40957 Test with error message descontruction 2026-02-20 09:29:15 -05:00
Jill Regan
d4fc305bfa Assign error message to string 2026-02-20 09:26:38 -05:00
Jill Regan
f4ee2a9d76 remove unused import 2026-02-20 09:07:45 -05:00
Jill Regan
59b7671409 Fix linting errors 2026-02-20 09:04:02 -05:00
Jill Regan
d7da1c3ae2 Fix merge confict 2026-02-20 08:41:37 -05:00
Jill Regan
9d7acefac9 Move comment 2026-02-20 08:34:52 -05:00
Jill Regan
04984a6c91 Add eslint disable 2026-02-20 08:31:14 -05:00
Jill Regan
db7314de7b Merge branch 'feature/migrate-to-sdk' into jill/validate-secret-reference 2026-02-20 08:24:44 -05:00
Jill Regan
ffffc2db51 Migrate connect to use SDK 2026-02-20 08:24:08 -05:00
Jill Regan
1e8273d4be Fix formatting 2026-02-19 14:24:51 -05:00
Jill Regan
015b03300e Code cleanup 2026-02-19 14:17:40 -05:00
Jill Regan
ab44f9f69c Remove unit test 2026-02-18 18:01:22 -05:00
Jill Regan
af49dd18de Remove connect handling 2026-02-18 18:00:42 -05:00
Jill Regan
6911316fe3 Add secret ref validation 2026-02-18 17:24:55 -05:00
Jill Regan
24235f3b6b Fix formatting 2026-02-18 16:37:41 -05:00
Jill Regan
a2ce22dd39 Add error handling 2026-02-18 16:35:10 -05:00
Jill Regan
d2fdd9df66 Update unit test 2026-02-18 14:12:14 -05:00
Jill Regan
95478552e8 Fix linting issues 2026-02-18 13:57:08 -05:00
Jill Regan
4a997a0402 Use SDK with service account 2026-02-18 13:48:19 -05:00
toga4
13f927c806 fix: set outputs/env vars for empty string field values
Empty string field values from 1Password were causing the action to skip setting outputs and environment variables entirely.
This was inconsistent with `op run` behavior, which sets the variable with an empty value.

- Change falsy check to explicit null/undefined check in extractSecret
- Skip setSecret for empty strings to avoid runner warning
- Add tests for empty string value handling
2026-01-23 10:38:43 +09:00
Volodymyr Zotov
b4962e1861 Use execFile to run safily pass arguments 2025-12-16 10:29:54 -06:00
Volodymyr Zotov
2f243ca4fa Use op-cli-installed as local package 2025-12-15 13:45:09 -06:00
Willi Carlsen
0ff92dd768 Using dotenv package instead of experimental API process.loadEnvFile
Signed-off-by: Willi Carlsen <carlsenwilli@gmail.com>
2025-09-06 07:37:10 +02:00
Willi Carlsen
08a0af8ec3 Added OP_ENV_FILE to acceptance test, fixed lint/style error and added example .env.tpl documentation in README
Signed-off-by: Willi Carlsen <carlsenwilli@gmail.com>
2025-09-03 08:45:53 +02:00
Willi Carlsen
d11f2d1dac feature: enable loading 1password secrets from file
Signed-off-by: Willi Carlsen <carlsenwilli@gmail.com>
2025-09-01 17:05:11 +02:00
Volodymyr Zotov
3a62b7cf63 Use op-cli-installer package to install CLI 2025-08-05 10:37:09 -05:00
Eduard Filip
3e2909a6b2 Add lint to workflow (#88)
* Add lint in workflow

This will check for code formatting, as well as for any ES lint issues.

* Format code

run `npm run check:write`

* Run lint and fix errors

Run `npm run lint` and then fix the errors shown.
2024-12-17 11:05:12 +01:00
Eduard Filip
cf1a288161 Remove protocol prepending (#66)
This code is no longer needed. Instead, we will enforce users to add the protocol themselves.
2024-02-21 21:19:05 +01:00
Eduard Filip
2792fede48 Migrate action to Typescript (#36)
* Make function for executing script

* Migrate auth validation

* Migrate load secret functionality

  We make use of the following in the migration:
  - `op-js` package (make direct calls to the CLI and nicely get the output of the commands)
  - `core.exportVariable` to nicely export a secret as an environment variable
  - `core.setOutput` to nicely export a secret a the step’s output.
  - `core.setSecret` to mask the value of the secret if logged on the action’s output.

  Note: `core.exportVariable` and `core.setOutput` work with multiline secrets without any additional work on our side.

  Also, we export the temporary path where the CLI is installed to make sure the `op-js` package can find it.

* Fix CLI installation process

* Fix conditional of appending protocol

  Fix conditional of appending `http://` to the Connect host.

* Update CLI version and improve script

* Use core.addPath

  This is a safer and nicer way to ensure the path to the CLI is included later in the pipeline (including this GitHub action).

* Use version from package.json

  This eliminates the duplication of version in the code

* Upgrade to Typescript 5

* Prettify test.yml

* Move constants to constants.ts

  This shows better what constants we use and they will be later used in both code and tests.

* Move 'validateAuth' to 'utils.ts'

* Add validate auth tests

* Extract functionality for extracting a secret

  This will enable us to easily test the functionality of the action regarding the extraction of secret and how it provides it to the rest of the pipeline based on user's input

* Add tests for extracting secret

* Move 'unsetPrevious' to 'utils.ts'

* Add unit test pipeline

* Add tests for 'unsetPrevious'

* Improve disabling eslint rules

  Disable the ES Lint rules only for the next line and add a comment explaining why it’s disabled.

* Improve code based on PR review feedback

  This contains code improvements that were easy to address based on PR review feedback.

* Improve CLI installation functionality

  Two key elements are improved:
  - The action will now automatically fetch the latest stable version of the CLI. There’s no longer the need to hardcode the version and manually update it.
  - The action will now perform a check if the CLI exists in the pipeline and install it if it’s not available.

* Simplify extractSecret functionality

  Eliminate the nested conditionals to have a cleaner and more readable code.

* Fix CLI version

  The curl would return the version number, but we forgot to append the `v` in the version (i.e. from 2.18.0 to v2.18.0). Now it should be fixed.

* Move loadSecrets function to utils.ts

  This is done to keep things modular and narrow down the scope and complexity of index.ts.

  `installCLI` will be kept in `index.ts` for the following reasons:
  - Moving it to utils brings complications (`import.meta.url` doesn’t work)
  - This code will be removed once the action will make use of the separate install CLI action

* Simplify code related to mocking

* Use semverToInt from op-js

  Version `0.1.9` of the `op-js` exports function `semverToInt`, therefore we no longer need to duplicate it in our code.

* Improve CLI installation script

  - Add architectures for Linux runners. Fail if the architecture is not supported.
  - Fail if the runner’s operating system is not supported.

* Change from debug messages to info

  In pre-TS GitHub Action, we’d print some messages to the output as info (e.g. authenticated as, populating variable, unsetting previous values). Therefore, we apply the same principle here since there’s useful info.

* use toHaveBeenCalled consistently in tests

  `toBeCalled` is an alias for `toHaveBeenCalled` and `toBeCalledWith` is an alias for `toHaveBeenCalledWith`. For consistency, we will use `toHaveBeenCalled` and `toHaveBeenCalledWith` consistently across our tests.

* Add warning if both configs are provided

  1Password CLI will prioritize Connect config (with `OP_CONNECT_HOST` and `OP_CONNECT_TOKEN`) over service account one (with `OP_SERVICE_ACCOUNT_TOKEN`). This shouldn’t happen, therefore we print a warning to the user if both are provided.

* Add comment about cli validation process

  The code itself seems a bit confusing, therefore we add a comment explaining how it works.

* test: assertions for loadSecrets function

* Improve loadSecrets function

  Return early if no env vars with valid secret references are found

* Update dependencies

* Upgrade action to use Node20

---------

Co-authored-by: Dustin Ruetz <dustin.ruetz@agilebits.com>
2024-02-21 17:38:38 +01:00
Dustin Ruetz
ade3078eb5 Tooling improvements (#34)
* feat: update tsconfig, uninstall vercel/ncc package and use tsc to build project

* feat: install 1password/front-end-style and configure Prettier

* feat: configure ESLint and fix lint errors

* build(deps): update types/node package to latest version

* feat: configure Jest

* feat: add 'validate' script to run formatting/linting/testing/building all together

* build: rebuild the dist/index.js file

* feat: make NPM scripts more granular

* refactor: make it clearer that Prettier config is being loaded from an existing dependency

* feat: add Husky and lint-staged to run pre-commit and pre-push checks

* fix: lint-staged testing step and Jest config file

* build(deps): update types/node package to latest version

* refactor: remove findrelated test script

* fix: move tsconfig.json to root directory, reinstall vercel/ncc for building

* fix: call to run function in index.ts

* build: rebuild the dist/index.js file

* fix: replace CommonJS __dirname with an ESModule equivalent

* fix: ignore config/.husky during ShellCheck

* fix: ignore .husky directory during ShellCheck

* fix: update lint.yml config to match ShellCheck README.md

* fix: remove coveragePathIgnorePatterns option from Jest config since node_modules is already the default value

* refactor: use './' prefix to refer to folders in the current directory in tsconfig.json

* fix: handle edge case where Error constructor is modified and add comments for context

* feat: bump package.json version to 1.2.0 to match current release

* fix: update lint.yml to use ShellCheck 2.0.0 exact version

* build(deps): update types/node package to latest version

* fix: update package-lock.json version 1.2.0

* feat: remove pre-commit and pre-push NPM scripts to simplify package.json

* fix: remove empty 'Default' column from 'configure Action Inputs' table

* fix: change the default values in action.yml to strings as per YAML validation
2023-03-29 11:34:37 -04:00