diff --git a/.circleci/config.yml b/.circleci/config.yml index 8e2cc3e37..77a8d006b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -30,52 +30,52 @@ jobs: command: mkdir -p .buildcache && echo "*" > .buildcache/.gitignore name: Ignore .buildcache - restore_cache: - key: package-fa8840f2e78bfa9c58d242426d80f4e30464516f-{{checksum ".buildcache/cache-keys/package-fa8840f2e78bfa9c58d242426d80f4e30464516f"}} + key: package-5e182eecadd802ce4fde19b40733c21f1920d680-{{checksum ".buildcache/cache-keys/package-5e182eecadd802ce4fde19b40733c21f1920d680"}} name: Restore package cache - restore_cache: - key: package-110a848ce5db07e7fc389430350c45261d2d7baa-{{checksum ".buildcache/cache-keys/package-110a848ce5db07e7fc389430350c45261d2d7baa"}} + key: package-72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d-{{checksum ".buildcache/cache-keys/package-72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d"}} name: Restore package cache - restore_cache: - key: package-36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d-{{checksum ".buildcache/cache-keys/package-36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d"}} + key: package-ccae35a6ffa3283396cbe5608aa626a65cf951f4-{{checksum ".buildcache/cache-keys/package-ccae35a6ffa3283396cbe5608aa626a65cf951f4"}} name: Restore package cache - restore_cache: - key: package-0922d907d014ef141526a2a3b9d54a3940adcbf3-{{checksum ".buildcache/cache-keys/package-0922d907d014ef141526a2a3b9d54a3940adcbf3"}} + key: package-0101b0c84138c8e37a5affd1171d04237dcd044f-{{checksum ".buildcache/cache-keys/package-0101b0c84138c8e37a5affd1171d04237dcd044f"}} name: Restore package cache - restore_cache: - key: package-ccb0599d3f5653d5bf75173f87d906156ebf1e3d-{{checksum ".buildcache/cache-keys/package-ccb0599d3f5653d5bf75173f87d906156ebf1e3d"}} + key: package-3735bcca8df7adfefa7d79ae87bb6731ed5e074f-{{checksum ".buildcache/cache-keys/package-3735bcca8df7adfefa7d79ae87bb6731ed5e074f"}} name: Restore package cache - restore_cache: - key: package-bced2a380b5354bba95ec9da4a54d06bc0a9b56d-{{checksum ".buildcache/cache-keys/package-bced2a380b5354bba95ec9da4a54d06bc0a9b56d"}} + key: package-81b9112a9e1bd1d33778c4673adbec942c595a7e-{{checksum ".buildcache/cache-keys/package-81b9112a9e1bd1d33778c4673adbec942c595a7e"}} name: Restore package cache - restore_cache: - key: package-9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f-{{checksum ".buildcache/cache-keys/package-9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f"}} + key: package-b04f52247addbb91ec89a35be1ddff9feadf7090-{{checksum ".buildcache/cache-keys/package-b04f52247addbb91ec89a35be1ddff9feadf7090"}} name: Restore package cache - restore_cache: - key: package-6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4-{{checksum ".buildcache/cache-keys/package-6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4"}} + key: package-25033317f5db33c76740dba3e792063240c317b1-{{checksum ".buildcache/cache-keys/package-25033317f5db33c76740dba3e792063240c317b1"}} name: Restore package cache - restore_cache: - key: package-276415ef2d0ac06fb080dd55910bb71613f9c049-{{checksum ".buildcache/cache-keys/package-276415ef2d0ac06fb080dd55910bb71613f9c049"}} + key: package-dc42bacf89f0d78468257a40c404e141fa9272c8-{{checksum ".buildcache/cache-keys/package-dc42bacf89f0d78468257a40c404e141fa9272c8"}} name: Restore package cache - restore_cache: - key: package-224e22a10a66af47d1f9468e0ca6c68f2a252599-{{checksum ".buildcache/cache-keys/package-224e22a10a66af47d1f9468e0ca6c68f2a252599"}} + key: package-f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0-{{checksum ".buildcache/cache-keys/package-f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0"}} name: Restore package cache - restore_cache: - key: package-b971c9df855df00922afb57baeda53f399318c79-{{checksum ".buildcache/cache-keys/package-b971c9df855df00922afb57baeda53f399318c79"}} + key: package-8dd295cf186df50e92ed66575b73e97003885428-{{checksum ".buildcache/cache-keys/package-8dd295cf186df50e92ed66575b73e97003885428"}} name: Restore package cache - restore_cache: - key: package-1c8250fee830f8fac2364e7d3e3f82ee5832983e-{{checksum ".buildcache/cache-keys/package-1c8250fee830f8fac2364e7d3e3f82ee5832983e"}} + key: package-997f9a9e448c02fe17505a5b75635b9dd1104d92-{{checksum ".buildcache/cache-keys/package-997f9a9e448c02fe17505a5b75635b9dd1104d92"}} name: Restore package cache - restore_cache: - key: package-a8981b00f8f6bce3fb156f73b58c4e33fe077876-{{checksum ".buildcache/cache-keys/package-a8981b00f8f6bce3fb156f73b58c4e33fe077876"}} + key: package-505ab0aca6b881919f05bb8e0125783a5799b4fc-{{checksum ".buildcache/cache-keys/package-505ab0aca6b881919f05bb8e0125783a5799b4fc"}} name: Restore package cache - restore_cache: - key: package-ee6ae4147a76888401e2032a2fee0926ef36ad00-{{checksum ".buildcache/cache-keys/package-ee6ae4147a76888401e2032a2fee0926ef36ad00"}} + key: package-b7d03bef8d16c702d595798df0cbda643915292c-{{checksum ".buildcache/cache-keys/package-b7d03bef8d16c702d595798df0cbda643915292c"}} name: Restore package cache - restore_cache: - key: package-e3454f0b7ee22d489b83f6daf78d545f4878a79c-{{checksum ".buildcache/cache-keys/package-e3454f0b7ee22d489b83f6daf78d545f4878a79c"}} + key: package-a68848e3db3953d016f73aabb3d732a0333b7bc9-{{checksum ".buildcache/cache-keys/package-a68848e3db3953d016f73aabb3d732a0333b7bc9"}} name: Restore package cache - restore_cache: - key: package-d92fb1003c4ac9e95b86d700d64bf54b76e6fef5-{{checksum ".buildcache/cache-keys/package-d92fb1003c4ac9e95b86d700d64bf54b76e6fef5"}} + key: package-89694dc28c6ddc1d0648b69cefdcc9f67d59a240-{{checksum ".buildcache/cache-keys/package-89694dc28c6ddc1d0648b69cefdcc9f67d59a240"}} name: Restore package cache - run: command: make package-meta-all @@ -87,20 +87,20 @@ jobs: command: ls -lahR .buildcache name: List Build Cache - run: - command: cp packages*.lock/pkgs.yml lockfile-87386c0c55d5c61a.yml + command: cp packages*.lock/pkgs.yml lockfile-7f1510c592a3019a.yml name: Update Lockfile Name - run: - command: tar -czf packages-87386c0c55d5c61a.tar.gz .buildcache/packages lockfile-87386c0c55d5c61a.yml + command: tar -czf packages-7f1510c592a3019a.tar.gz .buildcache/packages lockfile-7f1510c592a3019a.yml name: Create Raw Package Tarball - run: - command: tar -czf meta-87386c0c55d5c61a.tar.gz .buildcache/packages/store/*.json lockfile-87386c0c55d5c61a.yml + command: tar -czf meta-7f1510c592a3019a.tar.gz .buildcache/packages/store/*.json lockfile-7f1510c592a3019a.yml name: Create Metadata Tarball - store_artifacts: - path: lockfile-87386c0c55d5c61a.yml + path: lockfile-7f1510c592a3019a.yml - store_artifacts: - path: packages-87386c0c55d5c61a.tar.gz + path: packages-7f1510c592a3019a.tar.gz - store_artifacts: - path: meta-87386c0c55d5c61a.tar.gz + path: meta-7f1510c592a3019a.tar.gz - store_artifacts: path: .buildcache/packages environment: @@ -115,7 +115,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: fa8840f2e78bfa9c58d242426d80f4e30464516f + - PACKAGE_SPEC_ID: 5e182eecadd802ce4fde19b40733c21f1920d680 steps: - setup_remote_docker: docker_layer_caching: false @@ -129,7 +129,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-fa8840f2e78bfa9c58d242426d80f4e30464516f-{{checksum ".buildcache/cache-keys/package-fa8840f2e78bfa9c58d242426d80f4e30464516f"}} + key: package-5e182eecadd802ce4fde19b40733c21f1920d680-{{checksum ".buildcache/cache-keys/package-5e182eecadd802ce4fde19b40733c21f1920d680"}} name: Restore package cache - run: command: |2 @@ -145,11 +145,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -175,7 +175,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-fa8840f2e78bfa9c58d242426d80f4e30464516f-{{checksum ".buildcache/cache-keys/package-fa8840f2e78bfa9c58d242426d80f4e30464516f"}} + key: package-5e182eecadd802ce4fde19b40733c21f1920d680-{{checksum ".buildcache/cache-keys/package-5e182eecadd802ce4fde19b40733c21f1920d680"}} name: Save package cache paths: - .buildcache/packages/store @@ -187,7 +187,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: 110a848ce5db07e7fc389430350c45261d2d7baa + - PACKAGE_SPEC_ID: 72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d steps: - setup_remote_docker: docker_layer_caching: false @@ -201,7 +201,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-110a848ce5db07e7fc389430350c45261d2d7baa-{{checksum ".buildcache/cache-keys/package-110a848ce5db07e7fc389430350c45261d2d7baa"}} + key: package-72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d-{{checksum ".buildcache/cache-keys/package-72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d"}} name: Restore package cache - run: command: |2 @@ -217,11 +217,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -247,7 +247,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-110a848ce5db07e7fc389430350c45261d2d7baa-{{checksum ".buildcache/cache-keys/package-110a848ce5db07e7fc389430350c45261d2d7baa"}} + key: package-72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d-{{checksum ".buildcache/cache-keys/package-72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d"}} name: Save package cache paths: - .buildcache/packages/store @@ -259,7 +259,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: e3454f0b7ee22d489b83f6daf78d545f4878a79c + - PACKAGE_SPEC_ID: a68848e3db3953d016f73aabb3d732a0333b7bc9 steps: - setup_remote_docker: docker_layer_caching: false @@ -273,7 +273,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-e3454f0b7ee22d489b83f6daf78d545f4878a79c-{{checksum ".buildcache/cache-keys/package-e3454f0b7ee22d489b83f6daf78d545f4878a79c"}} + key: package-a68848e3db3953d016f73aabb3d732a0333b7bc9-{{checksum ".buildcache/cache-keys/package-a68848e3db3953d016f73aabb3d732a0333b7bc9"}} name: Restore package cache - run: command: |2 @@ -289,11 +289,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -319,7 +319,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-e3454f0b7ee22d489b83f6daf78d545f4878a79c-{{checksum ".buildcache/cache-keys/package-e3454f0b7ee22d489b83f6daf78d545f4878a79c"}} + key: package-a68848e3db3953d016f73aabb3d732a0333b7bc9-{{checksum ".buildcache/cache-keys/package-a68848e3db3953d016f73aabb3d732a0333b7bc9"}} name: Save package cache paths: - .buildcache/packages/store @@ -349,14 +349,14 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Layer Cache: copy-source' - run: - command: LAYER_SPEC_ID=03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 make -C packages*.lock load-builder-cache + command: LAYER_SPEC_ID=03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde make -C packages*.lock load-builder-cache name: Load whatever builder cache we have (if any) into the Docker daemon - run: command: |2- @@ -372,7 +372,7 @@ jobs: echo " attempts to directly clone private repositories." fi - make -f packages*.lock/layer.mk 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9-image + make -f packages*.lock/layer.mk 00-base-cc87158f920a83b1c241d68474eed6734b32c511-image name: Build base layer - run: command: |2- @@ -388,7 +388,7 @@ jobs: echo " attempts to directly clone private repositories." fi - make -f packages*.lock/layer.mk 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05-image + make -f packages*.lock/layer.mk 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb-image name: Build ui layer - run: command: |2- @@ -404,7 +404,7 @@ jobs: echo " attempts to directly clone private repositories." fi - make -f packages*.lock/layer.mk 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be-image + make -f packages*.lock/layer.mk 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d-image name: Build go-modules layer - run: command: |2- @@ -420,7 +420,7 @@ jobs: echo " attempts to directly clone private repositories." fi - make -f packages*.lock/layer.mk 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5-image + make -f packages*.lock/layer.mk 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde-image name: Build copy-source layer - run: command: |2- @@ -436,13 +436,13 @@ jobs: echo " attempts to directly clone private repositories." fi - make -f packages*.lock/layer.mk 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5-save + make -f packages*.lock/layer.mk 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde-save name: Build copy-source layer - save_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} name: 'Save Layer Cache: copy-source' paths: - - .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + - .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz environment: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain @@ -455,7 +455,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: 276415ef2d0ac06fb080dd55910bb71613f9c049 + - PACKAGE_SPEC_ID: dc42bacf89f0d78468257a40c404e141fa9272c8 steps: - setup_remote_docker: docker_layer_caching: false @@ -469,7 +469,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-276415ef2d0ac06fb080dd55910bb71613f9c049-{{checksum ".buildcache/cache-keys/package-276415ef2d0ac06fb080dd55910bb71613f9c049"}} + key: package-dc42bacf89f0d78468257a40c404e141fa9272c8-{{checksum ".buildcache/cache-keys/package-dc42bacf89f0d78468257a40c404e141fa9272c8"}} name: Restore package cache - run: command: |2 @@ -485,11 +485,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -515,7 +515,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-276415ef2d0ac06fb080dd55910bb71613f9c049-{{checksum ".buildcache/cache-keys/package-276415ef2d0ac06fb080dd55910bb71613f9c049"}} + key: package-dc42bacf89f0d78468257a40c404e141fa9272c8-{{checksum ".buildcache/cache-keys/package-dc42bacf89f0d78468257a40c404e141fa9272c8"}} name: Save package cache paths: - .buildcache/packages/store @@ -527,7 +527,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: 6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4 + - PACKAGE_SPEC_ID: 25033317f5db33c76740dba3e792063240c317b1 steps: - setup_remote_docker: docker_layer_caching: false @@ -541,7 +541,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4-{{checksum ".buildcache/cache-keys/package-6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4"}} + key: package-25033317f5db33c76740dba3e792063240c317b1-{{checksum ".buildcache/cache-keys/package-25033317f5db33c76740dba3e792063240c317b1"}} name: Restore package cache - run: command: |2 @@ -557,11 +557,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -587,7 +587,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4-{{checksum ".buildcache/cache-keys/package-6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4"}} + key: package-25033317f5db33c76740dba3e792063240c317b1-{{checksum ".buildcache/cache-keys/package-25033317f5db33c76740dba3e792063240c317b1"}} name: Save package cache paths: - .buildcache/packages/store @@ -610,7 +610,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: bced2a380b5354bba95ec9da4a54d06bc0a9b56d + - PACKAGE_SPEC_ID: 81b9112a9e1bd1d33778c4673adbec942c595a7e steps: - setup_remote_docker: docker_layer_caching: false @@ -624,7 +624,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-bced2a380b5354bba95ec9da4a54d06bc0a9b56d-{{checksum ".buildcache/cache-keys/package-bced2a380b5354bba95ec9da4a54d06bc0a9b56d"}} + key: package-81b9112a9e1bd1d33778c4673adbec942c595a7e-{{checksum ".buildcache/cache-keys/package-81b9112a9e1bd1d33778c4673adbec942c595a7e"}} name: Restore package cache - run: command: |2 @@ -640,11 +640,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -670,7 +670,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-bced2a380b5354bba95ec9da4a54d06bc0a9b56d-{{checksum ".buildcache/cache-keys/package-bced2a380b5354bba95ec9da4a54d06bc0a9b56d"}} + key: package-81b9112a9e1bd1d33778c4673adbec942c595a7e-{{checksum ".buildcache/cache-keys/package-81b9112a9e1bd1d33778c4673adbec942c595a7e"}} name: Save package cache paths: - .buildcache/packages/store @@ -682,7 +682,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: 36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d + - PACKAGE_SPEC_ID: ccae35a6ffa3283396cbe5608aa626a65cf951f4 steps: - setup_remote_docker: docker_layer_caching: false @@ -696,7 +696,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d-{{checksum ".buildcache/cache-keys/package-36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d"}} + key: package-ccae35a6ffa3283396cbe5608aa626a65cf951f4-{{checksum ".buildcache/cache-keys/package-ccae35a6ffa3283396cbe5608aa626a65cf951f4"}} name: Restore package cache - run: command: |2 @@ -712,11 +712,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -742,7 +742,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d-{{checksum ".buildcache/cache-keys/package-36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d"}} + key: package-ccae35a6ffa3283396cbe5608aa626a65cf951f4-{{checksum ".buildcache/cache-keys/package-ccae35a6ffa3283396cbe5608aa626a65cf951f4"}} name: Save package cache paths: - .buildcache/packages/store @@ -754,7 +754,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: 0922d907d014ef141526a2a3b9d54a3940adcbf3 + - PACKAGE_SPEC_ID: 0101b0c84138c8e37a5affd1171d04237dcd044f steps: - setup_remote_docker: docker_layer_caching: false @@ -768,7 +768,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-0922d907d014ef141526a2a3b9d54a3940adcbf3-{{checksum ".buildcache/cache-keys/package-0922d907d014ef141526a2a3b9d54a3940adcbf3"}} + key: package-0101b0c84138c8e37a5affd1171d04237dcd044f-{{checksum ".buildcache/cache-keys/package-0101b0c84138c8e37a5affd1171d04237dcd044f"}} name: Restore package cache - run: command: |2 @@ -784,11 +784,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -814,7 +814,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-0922d907d014ef141526a2a3b9d54a3940adcbf3-{{checksum ".buildcache/cache-keys/package-0922d907d014ef141526a2a3b9d54a3940adcbf3"}} + key: package-0101b0c84138c8e37a5affd1171d04237dcd044f-{{checksum ".buildcache/cache-keys/package-0101b0c84138c8e37a5affd1171d04237dcd044f"}} name: Save package cache paths: - .buildcache/packages/store @@ -826,7 +826,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: 1c8250fee830f8fac2364e7d3e3f82ee5832983e + - PACKAGE_SPEC_ID: 997f9a9e448c02fe17505a5b75635b9dd1104d92 steps: - setup_remote_docker: docker_layer_caching: false @@ -840,7 +840,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-1c8250fee830f8fac2364e7d3e3f82ee5832983e-{{checksum ".buildcache/cache-keys/package-1c8250fee830f8fac2364e7d3e3f82ee5832983e"}} + key: package-997f9a9e448c02fe17505a5b75635b9dd1104d92-{{checksum ".buildcache/cache-keys/package-997f9a9e448c02fe17505a5b75635b9dd1104d92"}} name: Restore package cache - run: command: |2 @@ -856,11 +856,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -886,7 +886,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-1c8250fee830f8fac2364e7d3e3f82ee5832983e-{{checksum ".buildcache/cache-keys/package-1c8250fee830f8fac2364e7d3e3f82ee5832983e"}} + key: package-997f9a9e448c02fe17505a5b75635b9dd1104d92-{{checksum ".buildcache/cache-keys/package-997f9a9e448c02fe17505a5b75635b9dd1104d92"}} name: Save package cache paths: - .buildcache/packages/store @@ -898,7 +898,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: 9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f + - PACKAGE_SPEC_ID: b04f52247addbb91ec89a35be1ddff9feadf7090 steps: - setup_remote_docker: docker_layer_caching: false @@ -912,7 +912,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f-{{checksum ".buildcache/cache-keys/package-9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f"}} + key: package-b04f52247addbb91ec89a35be1ddff9feadf7090-{{checksum ".buildcache/cache-keys/package-b04f52247addbb91ec89a35be1ddff9feadf7090"}} name: Restore package cache - run: command: |2 @@ -928,11 +928,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -958,7 +958,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f-{{checksum ".buildcache/cache-keys/package-9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f"}} + key: package-b04f52247addbb91ec89a35be1ddff9feadf7090-{{checksum ".buildcache/cache-keys/package-b04f52247addbb91ec89a35be1ddff9feadf7090"}} name: Save package cache paths: - .buildcache/packages/store @@ -981,7 +981,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: ee6ae4147a76888401e2032a2fee0926ef36ad00 + - PACKAGE_SPEC_ID: b7d03bef8d16c702d595798df0cbda643915292c steps: - setup_remote_docker: docker_layer_caching: false @@ -995,7 +995,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-ee6ae4147a76888401e2032a2fee0926ef36ad00-{{checksum ".buildcache/cache-keys/package-ee6ae4147a76888401e2032a2fee0926ef36ad00"}} + key: package-b7d03bef8d16c702d595798df0cbda643915292c-{{checksum ".buildcache/cache-keys/package-b7d03bef8d16c702d595798df0cbda643915292c"}} name: Restore package cache - run: command: |2 @@ -1011,11 +1011,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -1041,7 +1041,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-ee6ae4147a76888401e2032a2fee0926ef36ad00-{{checksum ".buildcache/cache-keys/package-ee6ae4147a76888401e2032a2fee0926ef36ad00"}} + key: package-b7d03bef8d16c702d595798df0cbda643915292c-{{checksum ".buildcache/cache-keys/package-b7d03bef8d16c702d595798df0cbda643915292c"}} name: Save package cache paths: - .buildcache/packages/store @@ -1203,7 +1203,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: b971c9df855df00922afb57baeda53f399318c79 + - PACKAGE_SPEC_ID: 8dd295cf186df50e92ed66575b73e97003885428 steps: - setup_remote_docker: docker_layer_caching: false @@ -1217,7 +1217,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-b971c9df855df00922afb57baeda53f399318c79-{{checksum ".buildcache/cache-keys/package-b971c9df855df00922afb57baeda53f399318c79"}} + key: package-8dd295cf186df50e92ed66575b73e97003885428-{{checksum ".buildcache/cache-keys/package-8dd295cf186df50e92ed66575b73e97003885428"}} name: Restore package cache - run: command: |2 @@ -1233,11 +1233,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -1263,7 +1263,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-b971c9df855df00922afb57baeda53f399318c79-{{checksum ".buildcache/cache-keys/package-b971c9df855df00922afb57baeda53f399318c79"}} + key: package-8dd295cf186df50e92ed66575b73e97003885428-{{checksum ".buildcache/cache-keys/package-8dd295cf186df50e92ed66575b73e97003885428"}} name: Save package cache paths: - .buildcache/packages/store @@ -1286,7 +1286,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: a8981b00f8f6bce3fb156f73b58c4e33fe077876 + - PACKAGE_SPEC_ID: 505ab0aca6b881919f05bb8e0125783a5799b4fc steps: - setup_remote_docker: docker_layer_caching: false @@ -1300,7 +1300,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-a8981b00f8f6bce3fb156f73b58c4e33fe077876-{{checksum ".buildcache/cache-keys/package-a8981b00f8f6bce3fb156f73b58c4e33fe077876"}} + key: package-505ab0aca6b881919f05bb8e0125783a5799b4fc-{{checksum ".buildcache/cache-keys/package-505ab0aca6b881919f05bb8e0125783a5799b4fc"}} name: Restore package cache - run: command: |2 @@ -1316,11 +1316,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -1346,7 +1346,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-a8981b00f8f6bce3fb156f73b58c4e33fe077876-{{checksum ".buildcache/cache-keys/package-a8981b00f8f6bce3fb156f73b58c4e33fe077876"}} + key: package-505ab0aca6b881919f05bb8e0125783a5799b4fc-{{checksum ".buildcache/cache-keys/package-505ab0aca6b881919f05bb8e0125783a5799b4fc"}} name: Save package cache paths: - .buildcache/packages/store @@ -1358,7 +1358,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: 224e22a10a66af47d1f9468e0ca6c68f2a252599 + - PACKAGE_SPEC_ID: f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0 steps: - setup_remote_docker: docker_layer_caching: false @@ -1372,7 +1372,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-224e22a10a66af47d1f9468e0ca6c68f2a252599-{{checksum ".buildcache/cache-keys/package-224e22a10a66af47d1f9468e0ca6c68f2a252599"}} + key: package-f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0-{{checksum ".buildcache/cache-keys/package-f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0"}} name: Restore package cache - run: command: |2 @@ -1388,11 +1388,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -1418,7 +1418,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-224e22a10a66af47d1f9468e0ca6c68f2a252599-{{checksum ".buildcache/cache-keys/package-224e22a10a66af47d1f9468e0ca6c68f2a252599"}} + key: package-f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0-{{checksum ".buildcache/cache-keys/package-f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0"}} name: Save package cache paths: - .buildcache/packages/store @@ -1430,7 +1430,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: ccb0599d3f5653d5bf75173f87d906156ebf1e3d + - PACKAGE_SPEC_ID: 3735bcca8df7adfefa7d79ae87bb6731ed5e074f steps: - setup_remote_docker: docker_layer_caching: false @@ -1444,7 +1444,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-ccb0599d3f5653d5bf75173f87d906156ebf1e3d-{{checksum ".buildcache/cache-keys/package-ccb0599d3f5653d5bf75173f87d906156ebf1e3d"}} + key: package-3735bcca8df7adfefa7d79ae87bb6731ed5e074f-{{checksum ".buildcache/cache-keys/package-3735bcca8df7adfefa7d79ae87bb6731ed5e074f"}} name: Restore package cache - run: command: |2 @@ -1460,11 +1460,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -1490,7 +1490,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-ccb0599d3f5653d5bf75173f87d906156ebf1e3d-{{checksum ".buildcache/cache-keys/package-ccb0599d3f5653d5bf75173f87d906156ebf1e3d"}} + key: package-3735bcca8df7adfefa7d79ae87bb6731ed5e074f-{{checksum ".buildcache/cache-keys/package-3735bcca8df7adfefa7d79ae87bb6731ed5e074f"}} name: Save package cache paths: - .buildcache/packages/store @@ -1502,7 +1502,7 @@ jobs: - AUTO_INSTALL_TOOLS: 'YES' - BUILDKIT_PROGRESS: plain - PRODUCT_REVISION: '' - - PACKAGE_SPEC_ID: d92fb1003c4ac9e95b86d700d64bf54b76e6fef5 + - PACKAGE_SPEC_ID: 89694dc28c6ddc1d0648b69cefdcc9f67d59a240 steps: - setup_remote_docker: docker_layer_caching: false @@ -1516,7 +1516,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-d92fb1003c4ac9e95b86d700d64bf54b76e6fef5-{{checksum ".buildcache/cache-keys/package-d92fb1003c4ac9e95b86d700d64bf54b76e6fef5"}} + key: package-89694dc28c6ddc1d0648b69cefdcc9f67d59a240-{{checksum ".buildcache/cache-keys/package-89694dc28c6ddc1d0648b69cefdcc9f67d59a240"}} name: Restore package cache - run: command: |2 @@ -1532,11 +1532,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -1562,7 +1562,7 @@ jobs: command: ls -lahR .buildcache/packages name: List packages - save_cache: - key: package-d92fb1003c4ac9e95b86d700d64bf54b76e6fef5-{{checksum ".buildcache/cache-keys/package-d92fb1003c4ac9e95b86d700d64bf54b76e6fef5"}} + key: package-89694dc28c6ddc1d0648b69cefdcc9f67d59a240-{{checksum ".buildcache/cache-keys/package-89694dc28c6ddc1d0648b69cefdcc9f67d59a240"}} name: Save package cache paths: - .buildcache/packages/store @@ -1578,7 +1578,7 @@ jobs: make test-sql POSTGRES_DOCKER_IMAGE_BASE=docker.mirror.hashicorp.services/postgres PG_DOCKER_TAG=latest name: Run SQL PgTap Tests workflows: - build-87386c0c55d5c61a: + build-7f1510c592a3019a: jobs: - build-common-layers - darwin_amd64_package: diff --git a/.circleci/config/@build-release.yml b/.circleci/config/@build-release.yml index 8ec700004..f3fa3b482 100644 --- a/.circleci/config/@build-release.yml +++ b/.circleci/config/@build-release.yml @@ -30,14 +30,14 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Layer Cache: copy-source' - run: - command: LAYER_SPEC_ID=03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 make -C packages*.lock load-builder-cache + command: LAYER_SPEC_ID=03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde make -C packages*.lock load-builder-cache name: Load whatever builder cache we have (if any) into the Docker daemon - run: command: |2- @@ -53,7 +53,7 @@ jobs: echo " attempts to directly clone private repositories." fi - make -f packages*.lock/layer.mk 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9-image + make -f packages*.lock/layer.mk 00-base-cc87158f920a83b1c241d68474eed6734b32c511-image name: Build base layer - run: command: |2- @@ -69,7 +69,7 @@ jobs: echo " attempts to directly clone private repositories." fi - make -f packages*.lock/layer.mk 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05-image + make -f packages*.lock/layer.mk 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb-image name: Build ui layer - run: command: |2- @@ -85,7 +85,7 @@ jobs: echo " attempts to directly clone private repositories." fi - make -f packages*.lock/layer.mk 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be-image + make -f packages*.lock/layer.mk 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d-image name: Build go-modules layer - run: command: |2- @@ -101,7 +101,7 @@ jobs: echo " attempts to directly clone private repositories." fi - make -f packages*.lock/layer.mk 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5-image + make -f packages*.lock/layer.mk 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde-image name: Build copy-source layer - run: command: |2- @@ -117,12 +117,12 @@ jobs: echo " attempts to directly clone private repositories." fi - make -f packages*.lock/layer.mk 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5-save + make -f packages*.lock/layer.mk 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde-save name: Build copy-source layer - save_cache: paths: - - .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + - .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} name: 'Save Layer Cache: copy-source' bundle-releases: executor: builder @@ -136,52 +136,52 @@ jobs: command: mkdir -p .buildcache && echo "*" > .buildcache/.gitignore name: Ignore .buildcache - restore_cache: - key: package-fa8840f2e78bfa9c58d242426d80f4e30464516f-{{checksum ".buildcache/cache-keys/package-fa8840f2e78bfa9c58d242426d80f4e30464516f"}} + key: package-5e182eecadd802ce4fde19b40733c21f1920d680-{{checksum ".buildcache/cache-keys/package-5e182eecadd802ce4fde19b40733c21f1920d680"}} name: Restore package cache - restore_cache: - key: package-110a848ce5db07e7fc389430350c45261d2d7baa-{{checksum ".buildcache/cache-keys/package-110a848ce5db07e7fc389430350c45261d2d7baa"}} + key: package-72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d-{{checksum ".buildcache/cache-keys/package-72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d"}} name: Restore package cache - restore_cache: - key: package-36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d-{{checksum ".buildcache/cache-keys/package-36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d"}} + key: package-ccae35a6ffa3283396cbe5608aa626a65cf951f4-{{checksum ".buildcache/cache-keys/package-ccae35a6ffa3283396cbe5608aa626a65cf951f4"}} name: Restore package cache - restore_cache: - key: package-0922d907d014ef141526a2a3b9d54a3940adcbf3-{{checksum ".buildcache/cache-keys/package-0922d907d014ef141526a2a3b9d54a3940adcbf3"}} + key: package-0101b0c84138c8e37a5affd1171d04237dcd044f-{{checksum ".buildcache/cache-keys/package-0101b0c84138c8e37a5affd1171d04237dcd044f"}} name: Restore package cache - restore_cache: - key: package-ccb0599d3f5653d5bf75173f87d906156ebf1e3d-{{checksum ".buildcache/cache-keys/package-ccb0599d3f5653d5bf75173f87d906156ebf1e3d"}} + key: package-3735bcca8df7adfefa7d79ae87bb6731ed5e074f-{{checksum ".buildcache/cache-keys/package-3735bcca8df7adfefa7d79ae87bb6731ed5e074f"}} name: Restore package cache - restore_cache: - key: package-bced2a380b5354bba95ec9da4a54d06bc0a9b56d-{{checksum ".buildcache/cache-keys/package-bced2a380b5354bba95ec9da4a54d06bc0a9b56d"}} + key: package-81b9112a9e1bd1d33778c4673adbec942c595a7e-{{checksum ".buildcache/cache-keys/package-81b9112a9e1bd1d33778c4673adbec942c595a7e"}} name: Restore package cache - restore_cache: - key: package-9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f-{{checksum ".buildcache/cache-keys/package-9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f"}} + key: package-b04f52247addbb91ec89a35be1ddff9feadf7090-{{checksum ".buildcache/cache-keys/package-b04f52247addbb91ec89a35be1ddff9feadf7090"}} name: Restore package cache - restore_cache: - key: package-6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4-{{checksum ".buildcache/cache-keys/package-6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4"}} + key: package-25033317f5db33c76740dba3e792063240c317b1-{{checksum ".buildcache/cache-keys/package-25033317f5db33c76740dba3e792063240c317b1"}} name: Restore package cache - restore_cache: - key: package-276415ef2d0ac06fb080dd55910bb71613f9c049-{{checksum ".buildcache/cache-keys/package-276415ef2d0ac06fb080dd55910bb71613f9c049"}} + key: package-dc42bacf89f0d78468257a40c404e141fa9272c8-{{checksum ".buildcache/cache-keys/package-dc42bacf89f0d78468257a40c404e141fa9272c8"}} name: Restore package cache - restore_cache: - key: package-224e22a10a66af47d1f9468e0ca6c68f2a252599-{{checksum ".buildcache/cache-keys/package-224e22a10a66af47d1f9468e0ca6c68f2a252599"}} + key: package-f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0-{{checksum ".buildcache/cache-keys/package-f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0"}} name: Restore package cache - restore_cache: - key: package-b971c9df855df00922afb57baeda53f399318c79-{{checksum ".buildcache/cache-keys/package-b971c9df855df00922afb57baeda53f399318c79"}} + key: package-8dd295cf186df50e92ed66575b73e97003885428-{{checksum ".buildcache/cache-keys/package-8dd295cf186df50e92ed66575b73e97003885428"}} name: Restore package cache - restore_cache: - key: package-1c8250fee830f8fac2364e7d3e3f82ee5832983e-{{checksum ".buildcache/cache-keys/package-1c8250fee830f8fac2364e7d3e3f82ee5832983e"}} + key: package-997f9a9e448c02fe17505a5b75635b9dd1104d92-{{checksum ".buildcache/cache-keys/package-997f9a9e448c02fe17505a5b75635b9dd1104d92"}} name: Restore package cache - restore_cache: - key: package-a8981b00f8f6bce3fb156f73b58c4e33fe077876-{{checksum ".buildcache/cache-keys/package-a8981b00f8f6bce3fb156f73b58c4e33fe077876"}} + key: package-505ab0aca6b881919f05bb8e0125783a5799b4fc-{{checksum ".buildcache/cache-keys/package-505ab0aca6b881919f05bb8e0125783a5799b4fc"}} name: Restore package cache - restore_cache: - key: package-ee6ae4147a76888401e2032a2fee0926ef36ad00-{{checksum ".buildcache/cache-keys/package-ee6ae4147a76888401e2032a2fee0926ef36ad00"}} + key: package-b7d03bef8d16c702d595798df0cbda643915292c-{{checksum ".buildcache/cache-keys/package-b7d03bef8d16c702d595798df0cbda643915292c"}} name: Restore package cache - restore_cache: - key: package-e3454f0b7ee22d489b83f6daf78d545f4878a79c-{{checksum ".buildcache/cache-keys/package-e3454f0b7ee22d489b83f6daf78d545f4878a79c"}} + key: package-a68848e3db3953d016f73aabb3d732a0333b7bc9-{{checksum ".buildcache/cache-keys/package-a68848e3db3953d016f73aabb3d732a0333b7bc9"}} name: Restore package cache - restore_cache: - key: package-d92fb1003c4ac9e95b86d700d64bf54b76e6fef5-{{checksum ".buildcache/cache-keys/package-d92fb1003c4ac9e95b86d700d64bf54b76e6fef5"}} + key: package-89694dc28c6ddc1d0648b69cefdcc9f67d59a240-{{checksum ".buildcache/cache-keys/package-89694dc28c6ddc1d0648b69cefdcc9f67d59a240"}} name: Restore package cache - run: command: make package-meta-all @@ -193,20 +193,20 @@ jobs: command: ls -lahR .buildcache name: List Build Cache - run: - command: cp packages*.lock/pkgs.yml lockfile-87386c0c55d5c61a.yml + command: cp packages*.lock/pkgs.yml lockfile-7f1510c592a3019a.yml name: Update Lockfile Name - run: - command: tar -czf packages-87386c0c55d5c61a.tar.gz .buildcache/packages lockfile-87386c0c55d5c61a.yml + command: tar -czf packages-7f1510c592a3019a.tar.gz .buildcache/packages lockfile-7f1510c592a3019a.yml name: Create Raw Package Tarball - run: - command: tar -czf meta-87386c0c55d5c61a.tar.gz .buildcache/packages/store/*.json lockfile-87386c0c55d5c61a.yml + command: tar -czf meta-7f1510c592a3019a.tar.gz .buildcache/packages/store/*.json lockfile-7f1510c592a3019a.yml name: Create Metadata Tarball - store_artifacts: - path: lockfile-87386c0c55d5c61a.yml + path: lockfile-7f1510c592a3019a.yml - store_artifacts: - path: packages-87386c0c55d5c61a.tar.gz + path: packages-7f1510c592a3019a.tar.gz - store_artifacts: - path: meta-87386c0c55d5c61a.tar.gz + path: meta-7f1510c592a3019a.tar.gz - store_artifacts: path: .buildcache/packages darwin_amd64_package: @@ -224,7 +224,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-fa8840f2e78bfa9c58d242426d80f4e30464516f-{{checksum ".buildcache/cache-keys/package-fa8840f2e78bfa9c58d242426d80f4e30464516f"}} + key: package-5e182eecadd802ce4fde19b40733c21f1920d680-{{checksum ".buildcache/cache-keys/package-5e182eecadd802ce4fde19b40733c21f1920d680"}} name: Restore package cache - run: command: |2 @@ -240,11 +240,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -272,10 +272,10 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-fa8840f2e78bfa9c58d242426d80f4e30464516f-{{checksum ".buildcache/cache-keys/package-fa8840f2e78bfa9c58d242426d80f4e30464516f"}} + key: package-5e182eecadd802ce4fde19b40733c21f1920d680-{{checksum ".buildcache/cache-keys/package-5e182eecadd802ce4fde19b40733c21f1920d680"}} name: Save package cache environment: - PACKAGE_SPEC_ID: fa8840f2e78bfa9c58d242426d80f4e30464516f + PACKAGE_SPEC_ID: 5e182eecadd802ce4fde19b40733c21f1920d680 darwin_arm64_package: executor: builder steps: @@ -291,7 +291,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-110a848ce5db07e7fc389430350c45261d2d7baa-{{checksum ".buildcache/cache-keys/package-110a848ce5db07e7fc389430350c45261d2d7baa"}} + key: package-72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d-{{checksum ".buildcache/cache-keys/package-72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d"}} name: Restore package cache - run: command: |2 @@ -307,11 +307,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -339,10 +339,10 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-110a848ce5db07e7fc389430350c45261d2d7baa-{{checksum ".buildcache/cache-keys/package-110a848ce5db07e7fc389430350c45261d2d7baa"}} + key: package-72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d-{{checksum ".buildcache/cache-keys/package-72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d"}} name: Save package cache environment: - PACKAGE_SPEC_ID: 110a848ce5db07e7fc389430350c45261d2d7baa + PACKAGE_SPEC_ID: 72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d freebsd_386_package: executor: builder steps: @@ -358,7 +358,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d-{{checksum ".buildcache/cache-keys/package-36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d"}} + key: package-ccae35a6ffa3283396cbe5608aa626a65cf951f4-{{checksum ".buildcache/cache-keys/package-ccae35a6ffa3283396cbe5608aa626a65cf951f4"}} name: Restore package cache - run: command: |2 @@ -374,11 +374,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -406,10 +406,10 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d-{{checksum ".buildcache/cache-keys/package-36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d"}} + key: package-ccae35a6ffa3283396cbe5608aa626a65cf951f4-{{checksum ".buildcache/cache-keys/package-ccae35a6ffa3283396cbe5608aa626a65cf951f4"}} name: Save package cache environment: - PACKAGE_SPEC_ID: 36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d + PACKAGE_SPEC_ID: ccae35a6ffa3283396cbe5608aa626a65cf951f4 freebsd_amd64_package: executor: builder steps: @@ -425,7 +425,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-0922d907d014ef141526a2a3b9d54a3940adcbf3-{{checksum ".buildcache/cache-keys/package-0922d907d014ef141526a2a3b9d54a3940adcbf3"}} + key: package-0101b0c84138c8e37a5affd1171d04237dcd044f-{{checksum ".buildcache/cache-keys/package-0101b0c84138c8e37a5affd1171d04237dcd044f"}} name: Restore package cache - run: command: |2 @@ -441,11 +441,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -473,10 +473,10 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-0922d907d014ef141526a2a3b9d54a3940adcbf3-{{checksum ".buildcache/cache-keys/package-0922d907d014ef141526a2a3b9d54a3940adcbf3"}} + key: package-0101b0c84138c8e37a5affd1171d04237dcd044f-{{checksum ".buildcache/cache-keys/package-0101b0c84138c8e37a5affd1171d04237dcd044f"}} name: Save package cache environment: - PACKAGE_SPEC_ID: 0922d907d014ef141526a2a3b9d54a3940adcbf3 + PACKAGE_SPEC_ID: 0101b0c84138c8e37a5affd1171d04237dcd044f freebsd_arm_package: executor: builder steps: @@ -492,7 +492,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-ccb0599d3f5653d5bf75173f87d906156ebf1e3d-{{checksum ".buildcache/cache-keys/package-ccb0599d3f5653d5bf75173f87d906156ebf1e3d"}} + key: package-3735bcca8df7adfefa7d79ae87bb6731ed5e074f-{{checksum ".buildcache/cache-keys/package-3735bcca8df7adfefa7d79ae87bb6731ed5e074f"}} name: Restore package cache - run: command: |2 @@ -508,11 +508,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -540,10 +540,10 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-ccb0599d3f5653d5bf75173f87d906156ebf1e3d-{{checksum ".buildcache/cache-keys/package-ccb0599d3f5653d5bf75173f87d906156ebf1e3d"}} + key: package-3735bcca8df7adfefa7d79ae87bb6731ed5e074f-{{checksum ".buildcache/cache-keys/package-3735bcca8df7adfefa7d79ae87bb6731ed5e074f"}} name: Save package cache environment: - PACKAGE_SPEC_ID: ccb0599d3f5653d5bf75173f87d906156ebf1e3d + PACKAGE_SPEC_ID: 3735bcca8df7adfefa7d79ae87bb6731ed5e074f linux_386_package: executor: builder steps: @@ -559,7 +559,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-bced2a380b5354bba95ec9da4a54d06bc0a9b56d-{{checksum ".buildcache/cache-keys/package-bced2a380b5354bba95ec9da4a54d06bc0a9b56d"}} + key: package-81b9112a9e1bd1d33778c4673adbec942c595a7e-{{checksum ".buildcache/cache-keys/package-81b9112a9e1bd1d33778c4673adbec942c595a7e"}} name: Restore package cache - run: command: |2 @@ -575,11 +575,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -607,10 +607,10 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-bced2a380b5354bba95ec9da4a54d06bc0a9b56d-{{checksum ".buildcache/cache-keys/package-bced2a380b5354bba95ec9da4a54d06bc0a9b56d"}} + key: package-81b9112a9e1bd1d33778c4673adbec942c595a7e-{{checksum ".buildcache/cache-keys/package-81b9112a9e1bd1d33778c4673adbec942c595a7e"}} name: Save package cache environment: - PACKAGE_SPEC_ID: bced2a380b5354bba95ec9da4a54d06bc0a9b56d + PACKAGE_SPEC_ID: 81b9112a9e1bd1d33778c4673adbec942c595a7e linux_amd64_package: executor: builder steps: @@ -626,7 +626,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f-{{checksum ".buildcache/cache-keys/package-9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f"}} + key: package-b04f52247addbb91ec89a35be1ddff9feadf7090-{{checksum ".buildcache/cache-keys/package-b04f52247addbb91ec89a35be1ddff9feadf7090"}} name: Restore package cache - run: command: |2 @@ -642,11 +642,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -674,10 +674,10 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f-{{checksum ".buildcache/cache-keys/package-9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f"}} + key: package-b04f52247addbb91ec89a35be1ddff9feadf7090-{{checksum ".buildcache/cache-keys/package-b04f52247addbb91ec89a35be1ddff9feadf7090"}} name: Save package cache environment: - PACKAGE_SPEC_ID: 9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f + PACKAGE_SPEC_ID: b04f52247addbb91ec89a35be1ddff9feadf7090 linux_arm_package: executor: builder steps: @@ -693,7 +693,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4-{{checksum ".buildcache/cache-keys/package-6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4"}} + key: package-25033317f5db33c76740dba3e792063240c317b1-{{checksum ".buildcache/cache-keys/package-25033317f5db33c76740dba3e792063240c317b1"}} name: Restore package cache - run: command: |2 @@ -709,11 +709,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -741,10 +741,10 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4-{{checksum ".buildcache/cache-keys/package-6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4"}} + key: package-25033317f5db33c76740dba3e792063240c317b1-{{checksum ".buildcache/cache-keys/package-25033317f5db33c76740dba3e792063240c317b1"}} name: Save package cache environment: - PACKAGE_SPEC_ID: 6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4 + PACKAGE_SPEC_ID: 25033317f5db33c76740dba3e792063240c317b1 linux_arm64_package: executor: builder steps: @@ -760,7 +760,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-276415ef2d0ac06fb080dd55910bb71613f9c049-{{checksum ".buildcache/cache-keys/package-276415ef2d0ac06fb080dd55910bb71613f9c049"}} + key: package-dc42bacf89f0d78468257a40c404e141fa9272c8-{{checksum ".buildcache/cache-keys/package-dc42bacf89f0d78468257a40c404e141fa9272c8"}} name: Restore package cache - run: command: |2 @@ -776,11 +776,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -808,10 +808,10 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-276415ef2d0ac06fb080dd55910bb71613f9c049-{{checksum ".buildcache/cache-keys/package-276415ef2d0ac06fb080dd55910bb71613f9c049"}} + key: package-dc42bacf89f0d78468257a40c404e141fa9272c8-{{checksum ".buildcache/cache-keys/package-dc42bacf89f0d78468257a40c404e141fa9272c8"}} name: Save package cache environment: - PACKAGE_SPEC_ID: 276415ef2d0ac06fb080dd55910bb71613f9c049 + PACKAGE_SPEC_ID: dc42bacf89f0d78468257a40c404e141fa9272c8 netbsd_386_package: executor: builder steps: @@ -827,7 +827,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-224e22a10a66af47d1f9468e0ca6c68f2a252599-{{checksum ".buildcache/cache-keys/package-224e22a10a66af47d1f9468e0ca6c68f2a252599"}} + key: package-f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0-{{checksum ".buildcache/cache-keys/package-f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0"}} name: Restore package cache - run: command: |2 @@ -843,11 +843,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -875,10 +875,10 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-224e22a10a66af47d1f9468e0ca6c68f2a252599-{{checksum ".buildcache/cache-keys/package-224e22a10a66af47d1f9468e0ca6c68f2a252599"}} + key: package-f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0-{{checksum ".buildcache/cache-keys/package-f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0"}} name: Save package cache environment: - PACKAGE_SPEC_ID: 224e22a10a66af47d1f9468e0ca6c68f2a252599 + PACKAGE_SPEC_ID: f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0 netbsd_amd64_package: executor: builder steps: @@ -894,7 +894,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-b971c9df855df00922afb57baeda53f399318c79-{{checksum ".buildcache/cache-keys/package-b971c9df855df00922afb57baeda53f399318c79"}} + key: package-8dd295cf186df50e92ed66575b73e97003885428-{{checksum ".buildcache/cache-keys/package-8dd295cf186df50e92ed66575b73e97003885428"}} name: Restore package cache - run: command: |2 @@ -910,11 +910,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -942,10 +942,10 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-b971c9df855df00922afb57baeda53f399318c79-{{checksum ".buildcache/cache-keys/package-b971c9df855df00922afb57baeda53f399318c79"}} + key: package-8dd295cf186df50e92ed66575b73e97003885428-{{checksum ".buildcache/cache-keys/package-8dd295cf186df50e92ed66575b73e97003885428"}} name: Save package cache environment: - PACKAGE_SPEC_ID: b971c9df855df00922afb57baeda53f399318c79 + PACKAGE_SPEC_ID: 8dd295cf186df50e92ed66575b73e97003885428 openbsd_386_package: executor: builder steps: @@ -961,7 +961,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-1c8250fee830f8fac2364e7d3e3f82ee5832983e-{{checksum ".buildcache/cache-keys/package-1c8250fee830f8fac2364e7d3e3f82ee5832983e"}} + key: package-997f9a9e448c02fe17505a5b75635b9dd1104d92-{{checksum ".buildcache/cache-keys/package-997f9a9e448c02fe17505a5b75635b9dd1104d92"}} name: Restore package cache - run: command: |2 @@ -977,11 +977,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -1009,10 +1009,10 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-1c8250fee830f8fac2364e7d3e3f82ee5832983e-{{checksum ".buildcache/cache-keys/package-1c8250fee830f8fac2364e7d3e3f82ee5832983e"}} + key: package-997f9a9e448c02fe17505a5b75635b9dd1104d92-{{checksum ".buildcache/cache-keys/package-997f9a9e448c02fe17505a5b75635b9dd1104d92"}} name: Save package cache environment: - PACKAGE_SPEC_ID: 1c8250fee830f8fac2364e7d3e3f82ee5832983e + PACKAGE_SPEC_ID: 997f9a9e448c02fe17505a5b75635b9dd1104d92 openbsd_amd64_package: executor: builder steps: @@ -1028,7 +1028,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-a8981b00f8f6bce3fb156f73b58c4e33fe077876-{{checksum ".buildcache/cache-keys/package-a8981b00f8f6bce3fb156f73b58c4e33fe077876"}} + key: package-505ab0aca6b881919f05bb8e0125783a5799b4fc-{{checksum ".buildcache/cache-keys/package-505ab0aca6b881919f05bb8e0125783a5799b4fc"}} name: Restore package cache - run: command: |2 @@ -1044,11 +1044,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -1076,10 +1076,10 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-a8981b00f8f6bce3fb156f73b58c4e33fe077876-{{checksum ".buildcache/cache-keys/package-a8981b00f8f6bce3fb156f73b58c4e33fe077876"}} + key: package-505ab0aca6b881919f05bb8e0125783a5799b4fc-{{checksum ".buildcache/cache-keys/package-505ab0aca6b881919f05bb8e0125783a5799b4fc"}} name: Save package cache environment: - PACKAGE_SPEC_ID: a8981b00f8f6bce3fb156f73b58c4e33fe077876 + PACKAGE_SPEC_ID: 505ab0aca6b881919f05bb8e0125783a5799b4fc solaris_amd64_package: executor: builder steps: @@ -1095,7 +1095,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-ee6ae4147a76888401e2032a2fee0926ef36ad00-{{checksum ".buildcache/cache-keys/package-ee6ae4147a76888401e2032a2fee0926ef36ad00"}} + key: package-b7d03bef8d16c702d595798df0cbda643915292c-{{checksum ".buildcache/cache-keys/package-b7d03bef8d16c702d595798df0cbda643915292c"}} name: Restore package cache - run: command: |2 @@ -1111,11 +1111,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -1143,10 +1143,10 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-ee6ae4147a76888401e2032a2fee0926ef36ad00-{{checksum ".buildcache/cache-keys/package-ee6ae4147a76888401e2032a2fee0926ef36ad00"}} + key: package-b7d03bef8d16c702d595798df0cbda643915292c-{{checksum ".buildcache/cache-keys/package-b7d03bef8d16c702d595798df0cbda643915292c"}} name: Save package cache environment: - PACKAGE_SPEC_ID: ee6ae4147a76888401e2032a2fee0926ef36ad00 + PACKAGE_SPEC_ID: b7d03bef8d16c702d595798df0cbda643915292c windows_386_package: executor: builder steps: @@ -1162,7 +1162,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-e3454f0b7ee22d489b83f6daf78d545f4878a79c-{{checksum ".buildcache/cache-keys/package-e3454f0b7ee22d489b83f6daf78d545f4878a79c"}} + key: package-a68848e3db3953d016f73aabb3d732a0333b7bc9-{{checksum ".buildcache/cache-keys/package-a68848e3db3953d016f73aabb3d732a0333b7bc9"}} name: Restore package cache - run: command: |2 @@ -1178,11 +1178,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -1210,10 +1210,10 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-e3454f0b7ee22d489b83f6daf78d545f4878a79c-{{checksum ".buildcache/cache-keys/package-e3454f0b7ee22d489b83f6daf78d545f4878a79c"}} + key: package-a68848e3db3953d016f73aabb3d732a0333b7bc9-{{checksum ".buildcache/cache-keys/package-a68848e3db3953d016f73aabb3d732a0333b7bc9"}} name: Save package cache environment: - PACKAGE_SPEC_ID: e3454f0b7ee22d489b83f6daf78d545f4878a79c + PACKAGE_SPEC_ID: a68848e3db3953d016f73aabb3d732a0333b7bc9 windows_amd64_package: executor: builder steps: @@ -1229,7 +1229,7 @@ jobs: command: make -C packages*.lock write-package-cache-key name: Write package cache key - restore_cache: - key: package-d92fb1003c4ac9e95b86d700d64bf54b76e6fef5-{{checksum ".buildcache/cache-keys/package-d92fb1003c4ac9e95b86d700d64bf54b76e6fef5"}} + key: package-89694dc28c6ddc1d0648b69cefdcc9f67d59a240-{{checksum ".buildcache/cache-keys/package-89694dc28c6ddc1d0648b69cefdcc9f67d59a240"}} name: Restore package cache - run: command: |2 @@ -1245,11 +1245,11 @@ jobs: command: make -C packages*.lock write-builder-cache-keys name: Write builder layer cache keys - restore_cache: - key: copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} + key: copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} keys: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} name: 'Restore Builder Image Cache: copy-source' - run: command: make -C packages*.lock load-builder-cache @@ -1277,12 +1277,12 @@ jobs: - save_cache: paths: - .buildcache/packages/store - key: package-d92fb1003c4ac9e95b86d700d64bf54b76e6fef5-{{checksum ".buildcache/cache-keys/package-d92fb1003c4ac9e95b86d700d64bf54b76e6fef5"}} + key: package-89694dc28c6ddc1d0648b69cefdcc9f67d59a240-{{checksum ".buildcache/cache-keys/package-89694dc28c6ddc1d0648b69cefdcc9f67d59a240"}} name: Save package cache environment: - PACKAGE_SPEC_ID: d92fb1003c4ac9e95b86d700d64bf54b76e6fef5 + PACKAGE_SPEC_ID: 89694dc28c6ddc1d0648b69cefdcc9f67d59a240 workflows: - build-87386c0c55d5c61a: + build-7f1510c592a3019a: jobs: - build-common-layers: {} - darwin_amd64_package: diff --git a/Makefile b/Makefile index 55b53210b..3289f9b8e 100644 --- a/Makefile +++ b/Makefile @@ -134,6 +134,7 @@ protobuild: @protoc-go-inject-tag -input=./internal/credential/store/credential.pb.go @protoc-go-inject-tag -input=./internal/credential/vault/store/vault.pb.go @protoc-go-inject-tag -input=./internal/servers/servers.pb.go + @protoc-go-inject-tag -input=./internal/kms/store/audit_key.pb.go # inject classification tags (see: https://github.com/hashicorp/go-eventlogger/tree/main/filters/encrypt) @protoc-go-inject-tag -input=./internal/gen/controller/api/services/auth_method_service.pb.go diff --git a/ci/goinstall.sh b/ci/goinstall.sh index eae37af09..e76d7fce6 100755 --- a/ci/goinstall.sh +++ b/ci/goinstall.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -VERSION="1.17.2" +VERSION="1.17.3" [ -z "$GOROOT" ] && GOROOT="$HOME/.go" [ -z "$GOPATH" ] && GOPATH="$HOME/go" diff --git a/go.mod b/go.mod index a479cb43d..36854271d 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/hashicorp/cap v0.1.1 github.com/hashicorp/dawdle v0.4.0 github.com/hashicorp/dbassert v0.0.0-20210708202608-ecf920cf1ed8 - github.com/hashicorp/eventlogger v0.1.0 + github.com/hashicorp/eventlogger v0.1.1-0.20211104100552-e1e801e50144 github.com/hashicorp/eventlogger/filters/encrypt v0.1.6-0.20211027211326-5db60a48f239 github.com/hashicorp/go-bexpr v0.1.10 github.com/hashicorp/go-cleanhttp v0.5.2 diff --git a/go.sum b/go.sum index dbad26584..c906495e0 100644 --- a/go.sum +++ b/go.sum @@ -476,8 +476,9 @@ github.com/hashicorp/dbassert v0.0.0-20210708202608-ecf920cf1ed8/go.mod h1:+B5eZ github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/eventlogger v0.1.0 h1:S6xc4gZVzewuDUP4R4Ngko419h/CGDuV/b4ADL3XLik= github.com/hashicorp/eventlogger v0.1.0/go.mod h1:a3IXf1aEJfpCPzseTOrwKj4fVW/Qn3oEmpQeaIznzH0= +github.com/hashicorp/eventlogger v0.1.1-0.20211104100552-e1e801e50144 h1:PCl0HtlVnIIloIozAKvjICu6K4IghKXAKNny3R3b2nI= +github.com/hashicorp/eventlogger v0.1.1-0.20211104100552-e1e801e50144/go.mod h1:a3IXf1aEJfpCPzseTOrwKj4fVW/Qn3oEmpQeaIznzH0= github.com/hashicorp/eventlogger/filters/encrypt v0.1.6-0.20211027211326-5db60a48f239 h1:Yh9tY0lige+y0trmjQeT9NRDo6+YvtNAzbmUNOsIUzI= github.com/hashicorp/eventlogger/filters/encrypt v0.1.6-0.20211027211326-5db60a48f239/go.mod h1:8rcez7Kw1zanB0/074qnOuGu7zxmNh9Xr2ZI+K4xVIA= github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= diff --git a/internal/cmd/base/initial_resources.go b/internal/cmd/base/initial_resources.go index 604d98f50..fb19631fc 100644 --- a/internal/cmd/base/initial_resources.go +++ b/internal/cmd/base/initial_resources.go @@ -195,7 +195,7 @@ func (b *Server) CreateInitialPasswordAuthMethod(ctx context.Context) (*password if admin { opts = append(opts, iam.WithName("admin"), - iam.WithDescription(`Initial admin user within the "global" scope`), + iam.WithDescription(fmt.Sprintf(`Initial admin user within the "%s" scope`, scope.Global.String())), ) } else { opts = append(opts, @@ -219,7 +219,7 @@ func (b *Server) CreateInitialPasswordAuthMethod(ctx context.Context) (*password // Create a role tying them together pr, err := iam.NewRole(scope.Global.String(), iam.WithName("Administration"), - iam.WithDescription(`Provides admin grants within the "global" scope to the initial user`), + iam.WithDescription(fmt.Sprintf(`Provides admin grants within the "%s" scope to the initial user`, scope.Global.String())), ) if err != nil { return nil, fmt.Errorf("error creating in memory role for generated grants: %w", err) diff --git a/internal/cmd/base/option.go b/internal/cmd/base/option.go index de946202a..ef2888ede 100644 --- a/internal/cmd/base/option.go +++ b/internal/cmd/base/option.go @@ -3,6 +3,7 @@ package base import ( "github.com/hashicorp/boundary/internal/observability/event" "github.com/hashicorp/boundary/sdk/pbs/plugin" + wrapping "github.com/hashicorp/go-kms-wrapping" ) // getOpts - iterate the inbound Options and return a struct. @@ -34,6 +35,7 @@ type Options struct { withDatabaseTemplate string withEventerConfig *event.EventerConfig withEventFlags *EventFlags + withEventWrapper wrapping.Wrapper withAttributeFieldPrefix string withStatusCode int withHostPlugin func() (string, plugin.HostPluginServiceClient) @@ -140,6 +142,12 @@ func WithEventFlags(flags *EventFlags) Option { } } +func WithEventAuditWrapper(w wrapping.Wrapper) Option { + return func(o *Options) { + o.withEventWrapper = w + } +} + // WithAttributeFieldPrefix tells the command what prefix // to attach to attribute fields when they are returned as errors. func WithAttributeFieldPrefix(p string) Option { diff --git a/internal/cmd/base/servers.go b/internal/cmd/base/servers.go index 46bb9a09a..b4fdc1590 100644 --- a/internal/cmd/base/servers.go +++ b/internal/cmd/base/servers.go @@ -196,7 +196,7 @@ func (b *Server) SetupEventing(logger hclog.Logger, serializationLock *sync.Mute } } - e, err := event.NewEventer(logger, serializationLock, serverName, *opts.withEventerConfig) + e, err := event.NewEventer(logger, serializationLock, serverName, *opts.withEventerConfig, event.WithAuditWrapper(opts.withEventWrapper)) if err != nil { return berrors.WrapDeprecated(err, op, berrors.WithMsg("unable to create eventer")) } diff --git a/internal/cmd/commands/dev/dev.go b/internal/cmd/commands/dev/dev.go index f8b2fad60..c390b2e64 100644 --- a/internal/cmd/commands/dev/dev.go +++ b/internal/cmd/commands/dev/dev.go @@ -503,10 +503,6 @@ func (c *Command) Run(args []string) int { c.UI.Error(err.Error()) return base.CommandUserError } - if err := c.SetupEventing(c.Logger, c.StderrLock, serverName, base.WithEventerConfig(c.Config.Eventing), base.WithEventFlags(eventFlags)); err != nil { - c.UI.Error(err.Error()) - return base.CommandCliError - } // Initialize status grace period (0 denotes using env or default // here) @@ -525,6 +521,15 @@ func (c *Command) Run(args []string) int { c.UI.Error("Controller KMS not found after parsing KMS blocks") return base.CommandUserError } + if err := c.SetupEventing( + c.Logger, + c.StderrLock, + serverName, + base.WithEventerConfig(c.Config.Eventing), + base.WithEventFlags(eventFlags)); err != nil { + c.UI.Error(err.Error()) + return base.CommandCliError + } if c.WorkerAuthKms == nil { c.UI.Error("Worker Auth KMS not found after parsing KMS blocks") return base.CommandUserError diff --git a/internal/cmd/commands/rolescmd/funcs.go b/internal/cmd/commands/rolescmd/funcs.go index fb104148c..5c0d85bf6 100644 --- a/internal/cmd/commands/rolescmd/funcs.go +++ b/internal/cmd/commands/rolescmd/funcs.go @@ -9,6 +9,7 @@ import ( "github.com/hashicorp/boundary/api/roles" "github.com/hashicorp/boundary/internal/cmd/base" "github.com/hashicorp/boundary/internal/perms" + "github.com/hashicorp/boundary/internal/types/scope" "github.com/mitchellh/go-wordwrap" ) @@ -214,7 +215,7 @@ func extraFlagsHandlingFuncImpl(c *Command, _ *base.FlagSets, opts *[]roles.Opti if len(c.flagGrants) > 0 { for _, grant := range c.flagGrants { - _, err := perms.Parse("global", grant) + _, err := perms.Parse(scope.Global.String(), grant) if err != nil { c.UI.Error(fmt.Errorf("Grant %q could not be parsed successfully: %w", grant, err).Error()) return false diff --git a/internal/cmd/commands/targetscmd/funcs.go b/internal/cmd/commands/targetscmd/funcs.go index 8ffa0bb6c..cc238d7c5 100644 --- a/internal/cmd/commands/targetscmd/funcs.go +++ b/internal/cmd/commands/targetscmd/funcs.go @@ -14,6 +14,7 @@ import ( "github.com/hashicorp/boundary/globals" "github.com/hashicorp/boundary/internal/cmd/base" "github.com/hashicorp/boundary/internal/credential" + "github.com/hashicorp/boundary/internal/types/scope" "github.com/hashicorp/go-secure-stdlib/strutil" "github.com/mitchellh/go-wordwrap" "github.com/posener/complete" @@ -912,9 +913,9 @@ var keySubstMap = map[string]string{ func exampleOutput() string { item := &targets.Target{ Id: "ttcp_1234567890", - ScopeId: "global", + ScopeId: scope.Global.String(), Scope: &scopes.ScopeInfo{ - Id: "global", + Id: scope.Global.String(), }, Name: "foo", Description: "The bar of foos", diff --git a/internal/cmd/common/flags.go b/internal/cmd/common/flags.go index 9c022b383..1159eaafe 100644 --- a/internal/cmd/common/flags.go +++ b/internal/cmd/common/flags.go @@ -10,6 +10,7 @@ import ( "strings" "github.com/hashicorp/boundary/internal/cmd/base" + "github.com/hashicorp/boundary/internal/types/scope" "github.com/hashicorp/go-secure-stdlib/parseutil" "github.com/posener/complete" ) @@ -22,7 +23,7 @@ func PopulateCommonFlags(c *base.Command, f *base.FlagSet, resourceType string, Name: "scope-id", Target: &c.FlagScopeId, EnvVar: "BOUNDARY_SCOPE_ID", - Default: "global", + Default: scope.Global.String(), Completion: complete.PredictAnything, Usage: `Scope in which to make the request.`, }) diff --git a/internal/db/db.go b/internal/db/db.go index 9586cd566..6c3344a39 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -44,6 +44,17 @@ type DB struct { *gorm.DB } +// Debug will enable/disable debug info for the connection +func (db *DB) Debug(on bool) { + if on { + // info level in the Gorm domain which maps to a debug level in the boundary domain + db.Logger = logger.Default.LogMode(logger.Info) + } else { + // the default level in the gorm domain is: error level + db.Logger = logger.Default.LogMode(logger.Error) + } +} + // SqlDB returns the underlying sql.DB // // Note: This func is not named DB(), because our choice of ORM (gorm) which is diff --git a/internal/db/schema/internal/edition/edition.go b/internal/db/schema/internal/edition/edition.go index ba84d5c9f..f4a717281 100644 --- a/internal/db/schema/internal/edition/edition.go +++ b/internal/db/schema/internal/edition/edition.go @@ -121,6 +121,9 @@ func New(name string, dialect Dialect, m embed.FS, priority int) Edition { } contents = strings.TrimSpace(contents) + if _, exists := migrations[fullV]; exists { + panic(fmt.Sprintf("migration file for version %d already exists", fullV)) + } migrations[fullV] = []byte(contents) return nil diff --git a/internal/db/schema/internal/edition/edition_test.go b/internal/db/schema/internal/edition/edition_test.go index d0e6810f4..d28a7cffc 100644 --- a/internal/db/schema/internal/edition/edition_test.go +++ b/internal/db/schema/internal/edition/edition_test.go @@ -74,6 +74,8 @@ var ( noMinorVersion embed.FS //go:embed testdata/invalid/no-major-version noMajorVersion embed.FS + //go:embed testdata/invalid/duplicate-versions + duplicateVersions embed.FS ) func TestNewPanics(t *testing.T) { @@ -103,6 +105,10 @@ func TestNewPanics(t *testing.T) { "noMajorVersion", noMajorVersion, }, + { + "duplicateVersions", + duplicateVersions, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/internal/db/schema/internal/edition/testdata/invalid/duplicate-versions/0/01_initial.up.sql b/internal/db/schema/internal/edition/testdata/invalid/duplicate-versions/0/01_initial.up.sql new file mode 100644 index 000000000..cda8bcced --- /dev/null +++ b/internal/db/schema/internal/edition/testdata/invalid/duplicate-versions/0/01_initial.up.sql @@ -0,0 +1,5 @@ +begin; + create table one ( + id bigint primary key + ); +commit; diff --git a/internal/db/schema/internal/edition/testdata/invalid/duplicate-versions/0/01_initial_also.up.sql b/internal/db/schema/internal/edition/testdata/invalid/duplicate-versions/0/01_initial_also.up.sql new file mode 100644 index 000000000..90f0b5fbd --- /dev/null +++ b/internal/db/schema/internal/edition/testdata/invalid/duplicate-versions/0/01_initial_also.up.sql @@ -0,0 +1,5 @@ +begin; + create table one_also ( + id bigint primary key + ); +commit; diff --git a/internal/db/schema/internal/postgres/lock_test.go b/internal/db/schema/internal/postgres/lock_test.go index e6b9f5d7e..02a7df6b1 100644 --- a/internal/db/schema/internal/postgres/lock_test.go +++ b/internal/db/schema/internal/postgres/lock_test.go @@ -24,6 +24,8 @@ func TestTrySharedLock(t *testing.T) { require.NoError(t, err) d2, err := common.SqlOpen(dbtest.Postgres, u) + require.NoError(t, err) + p2, err := postgres.New(ctx, d2) require.NoError(t, err) @@ -47,6 +49,8 @@ func TestTryLock(t *testing.T) { require.NoError(t, err) d2, err := common.SqlOpen(dbtest.Postgres, u) + require.NoError(t, err) + p2, err := postgres.New(ctx, d2) require.NoError(t, err) @@ -56,7 +60,9 @@ func TestTryLock(t *testing.T) { err = p2.TryLock(ctx) require.Error(t, err) - ctx2, _ := context.WithTimeout(ctx, time.Millisecond) + ctx2, cancel := context.WithTimeout(ctx, time.Millisecond) + defer cancel() + err = p2.Lock(ctx2) require.Error(t, err) } @@ -74,6 +80,8 @@ func TestLock(t *testing.T) { require.NoError(t, err) d2, err := common.SqlOpen(dbtest.Postgres, u) + require.NoError(t, err) + p2, err := postgres.New(ctx, d2) require.NoError(t, err) @@ -83,7 +91,9 @@ func TestLock(t *testing.T) { err = p2.TryLock(ctx) require.Error(t, err) - ctx2, _ := context.WithTimeout(ctx, time.Millisecond) + ctx2, cancel := context.WithTimeout(ctx, time.Millisecond) + defer cancel() + err = p2.Lock(ctx2) require.Error(t, err) } @@ -100,6 +110,8 @@ func TestUnlock(t *testing.T) { require.NoError(t, err) d2, err := common.SqlOpen(dbtest.Postgres, u) + require.NoError(t, err) + p2, err := postgres.New(ctx, d2) require.NoError(t, err) @@ -121,6 +133,7 @@ func TestUnlock(t *testing.T) { // clear lock on p2 err = p2.Unlock(ctx) + require.NoError(t, err) // p can now get lock err = p.TryLock(ctx) @@ -138,6 +151,8 @@ func TestUnlockShared(t *testing.T) { require.NoError(t, err) d2, err := common.SqlOpen(dbtest.Postgres, u) + require.NoError(t, err) + p2, err := postgres.New(ctx, d2) require.NoError(t, err) diff --git a/internal/db/schema/internal/postgres/testing_test.go b/internal/db/schema/internal/postgres/testing_test.go index 4fb5f2b37..2f16cd239 100644 --- a/internal/db/schema/internal/postgres/testing_test.go +++ b/internal/db/schema/internal/postgres/testing_test.go @@ -13,7 +13,7 @@ import ( // setup is a helper function for tests. // It creates a new database using Template1, establishes an connection, -// and returns a *postgres.Postgrs. +// and returns a *postgres.Postgres. // It also returns the underlying sql.DB and connection url so tests // can establish additional connections if necessary. func setup(ctx context.Context, t *testing.T) (*postgres.Postgres, *sql.DB, string) { @@ -30,6 +30,7 @@ func setup(ctx context.Context, t *testing.T) (*postgres.Postgres, *sql.DB, stri require.NoError(t, d.Close()) }) p, err := postgres.New(ctx, d) + require.NoError(t, err) return p, d, u } diff --git a/internal/db/schema/migrations/oss/postgres/19/02_kms_audit.up.sql b/internal/db/schema/migrations/oss/postgres/19/02_kms_audit.up.sql new file mode 100644 index 000000000..73270afa5 --- /dev/null +++ b/internal/db/schema/migrations/oss/postgres/19/02_kms_audit.up.sql @@ -0,0 +1,66 @@ +begin; + +-- kms_audit_key entries are DEKs for crypto operations on audit entries. +create table kms_audit_key ( + private_id wt_private_id primary key, + root_key_id wt_private_id not null unique -- there can be only one audit dek per root key + references kms_root_key(private_id) + on delete cascade + on update cascade, + create_time wt_timestamp +); + + -- define the immutable fields for kms_audit_key (all of them) +create trigger + immutable_columns +before +update on kms_audit_key + for each row execute procedure immutable_columns('private_id', 'root_key_id', 'create_time'); + +-- define the value of kms_audit_key's create_time +create trigger + default_create_time_column +before +insert on kms_audit_key + for each row execute procedure default_create_time(); + +-- kms_audit_key_version entries are version of DEK keys used crypto operations on audit entries. +-- entries. +create table kms_audit_key_version ( + private_id wt_private_id primary key, + audit_key_id wt_private_id not null + references kms_audit_key(private_id) + on delete cascade + on update cascade, + root_key_version_id wt_private_id not null + references kms_root_key_version(private_id) + on delete cascade + on update cascade, + version wt_version, + key bytea not null, + create_time wt_timestamp, + constraint kms_audit_key_version_audit_key_id_uq + unique(audit_key_id, version) +); + + -- define the immutable fields for kms_audit_key_version (all of them) +create trigger + immutable_columns +before +update on kms_audit_key_version + for each row execute procedure immutable_columns('private_id', 'audit_key_id', 'root_key_version_id', 'version', 'key', 'create_time'); + +-- define the value of kms_audit_key_version's create_time +create trigger + default_create_time_column +before +insert on kms_audit_key_version + for each row execute procedure default_create_time(); + +-- define the value of kms_audit_key_version's version column +create trigger + kms_version_column +before insert on kms_audit_key_version + for each row execute procedure kms_version_column('audit_key_id'); + +commit; diff --git a/internal/db/schema/migrations/oss/postgres/19/01_domain_types.up.sql b/internal/db/schema/migrations/oss/postgres/20/01_domain_types.up.sql similarity index 100% rename from internal/db/schema/migrations/oss/postgres/19/01_domain_types.up.sql rename to internal/db/schema/migrations/oss/postgres/20/01_domain_types.up.sql diff --git a/internal/db/schema/migrations/oss/postgres/19/02_plugin.up.sql b/internal/db/schema/migrations/oss/postgres/20/02_plugin.up.sql similarity index 100% rename from internal/db/schema/migrations/oss/postgres/19/02_plugin.up.sql rename to internal/db/schema/migrations/oss/postgres/20/02_plugin.up.sql diff --git a/internal/db/schema/migrations/oss/postgres/19/03_hostplugin.up.sql b/internal/db/schema/migrations/oss/postgres/20/03_hostplugin.up.sql similarity index 100% rename from internal/db/schema/migrations/oss/postgres/19/03_hostplugin.up.sql rename to internal/db/schema/migrations/oss/postgres/20/03_hostplugin.up.sql diff --git a/internal/db/schema/migrations/oss/postgres/19/04_host.up.sql b/internal/db/schema/migrations/oss/postgres/20/04_host.up.sql similarity index 100% rename from internal/db/schema/migrations/oss/postgres/19/04_host.up.sql rename to internal/db/schema/migrations/oss/postgres/20/04_host.up.sql diff --git a/internal/db/schema/migrations/oss/postgres/19/05_plugin_host.up.sql b/internal/db/schema/migrations/oss/postgres/20/05_plugin_host.up.sql similarity index 100% rename from internal/db/schema/migrations/oss/postgres/19/05_plugin_host.up.sql rename to internal/db/schema/migrations/oss/postgres/20/05_plugin_host.up.sql diff --git a/internal/db/schema/migrations/oss/postgres/19/06_preferred_endpoints.up.sql b/internal/db/schema/migrations/oss/postgres/20/06_preferred_endpoints.up.sql similarity index 100% rename from internal/db/schema/migrations/oss/postgres/19/06_preferred_endpoints.up.sql rename to internal/db/schema/migrations/oss/postgres/20/06_preferred_endpoints.up.sql diff --git a/internal/db/schema/migrations/oss/postgres/19/07_wh_session_dimensions.up.sql b/internal/db/schema/migrations/oss/postgres/20/07_wh_session_dimensions.up.sql similarity index 100% rename from internal/db/schema/migrations/oss/postgres/19/07_wh_session_dimensions.up.sql rename to internal/db/schema/migrations/oss/postgres/20/07_wh_session_dimensions.up.sql diff --git a/internal/db/schema/migrations/oss/postgres_14_01_test.go b/internal/db/schema/migrations/oss/postgres_14_01_test.go deleted file mode 100644 index fcc5421b2..000000000 --- a/internal/db/schema/migrations/oss/postgres_14_01_test.go +++ /dev/null @@ -1,183 +0,0 @@ -package oss_test - -import ( - "context" - "testing" - - "github.com/hashicorp/boundary/internal/auth/oidc" - "github.com/hashicorp/boundary/internal/authtoken" - "github.com/hashicorp/boundary/internal/db" - "github.com/hashicorp/boundary/internal/db/common" - "github.com/hashicorp/boundary/internal/db/schema" - "github.com/hashicorp/boundary/internal/host/static" - "github.com/hashicorp/boundary/internal/iam" - "github.com/hashicorp/boundary/internal/kms" - "github.com/hashicorp/boundary/internal/session" - "github.com/hashicorp/boundary/internal/target" - "github.com/hashicorp/boundary/internal/target/tcp" - "github.com/hashicorp/boundary/testing/dbtest" - wrapping "github.com/hashicorp/go-kms-wrapping" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func TestMigrations_UserDimension(t *testing.T) { - const ( - priorMigration = 13001 - currentMigration = 14001 - ) - - t.Parallel() - assert, require := assert.New(t), require.New(t) - ctx := context.Background() - dialect := dbtest.Postgres - - c, u, _, err := dbtest.StartUsingTemplate(dialect, dbtest.WithTemplate(dbtest.Template1)) - require.NoError(err) - t.Cleanup(func() { - require.NoError(c()) - }) - d, err := common.SqlOpen(dialect, u) - require.NoError(err) - - // migration to the prior migration (before the one we want to test) - m, err := schema.NewManager(ctx, schema.Dialect(dialect), d, schema.WithEditions( - schema.TestCreatePartialEditions(schema.Dialect(dialect), schema.PartialEditions{"oss": priorMigration}), - )) - require.NoError(err) - - assert.NoError(m.ApplyMigrations(ctx)) - state, err := m.CurrentState(ctx) - require.NoError(err) - want := &schema.State{ - Initialized: true, - Editions: []schema.EditionState{ - { - Name: "oss", - BinarySchemaVersion: priorMigration, - DatabaseSchemaVersion: priorMigration, - DatabaseSchemaState: schema.Equal, - }, - }, - } - require.Equal(want, state) - - // okay, now we can seed the database with test data - dbType, err := db.StringToDbType(dialect) - require.NoError(err) - conn, err := db.Open(dbType, u) - require.NoError(err) - - rw := db.New(conn) - wrapper := db.TestWrapper(t) - - org, prj := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) - require.NotNil(prj) - assert.NotEmpty(prj.GetPublicId()) - - hc := static.TestCatalogs(t, conn, prj.GetPublicId(), 1)[0] - hs := static.TestSets(t, conn, hc.GetPublicId(), 1)[0] - h := static.TestHosts(t, conn, hc.GetPublicId(), 1)[0] - static.TestSetMembers(t, conn, hs.GetPublicId(), []*static.Host{h}) - - tar := tcp.TestTarget(t, conn, prj.GetPublicId(), "test", target.WithHostSources([]string{hs.GetPublicId()})) - var sessions []*session.Session - - kmsCache := kms.TestKms(t, conn, wrapper) - databaseWrapper, err := kmsCache.GetWrapper(ctx, org.GetPublicId(), kms.KeyPurposeDatabase) - require.NoError(err) - - { - at := authtoken.TestAuthToken(t, conn, kmsCache, org.GetPublicId()) - uId := at.GetIamUserId() - - sess := session.TestSession(t, conn, wrapper, session.ComposedOf{ - UserId: uId, - HostId: h.GetPublicId(), - TargetId: tar.GetPublicId(), - HostSetId: hs.GetPublicId(), - AuthTokenId: at.GetPublicId(), - ScopeId: prj.GetPublicId(), - Endpoint: "tcp://127.0.0.1:22", - }) - sessions = append(sessions, sess) - } - - { - at := testOidcAuthToken(t, conn, kmsCache, databaseWrapper, org.GetPublicId()) - uId := at.GetIamUserId() - - sess := session.TestSession(t, conn, wrapper, session.ComposedOf{ - UserId: uId, - HostId: h.GetPublicId(), - TargetId: tar.GetPublicId(), - HostSetId: hs.GetPublicId(), - AuthTokenId: at.GetPublicId(), - ScopeId: prj.GetPublicId(), - Endpoint: "tcp://127.0.0.1:22", - }) - sessions = append(sessions, sess) - } - - sessionRepo, err := session.NewRepository(rw, rw, kmsCache) - require.NoError(err) - - count, err := sessionRepo.TerminateCompletedSessions(ctx) - assert.NoError(err) - assert.Zero(count) - - for _, sess := range sessions { - // call TerminateSession - _, err = sessionRepo.TerminateSession(ctx, sess.GetPublicId(), 1, session.ClosedByUser) - assert.NoError(err) - } - - // now we're ready for the migration we want to test. - m, err = schema.NewManager(ctx, schema.Dialect(dialect), d, schema.WithEditions( - schema.TestCreatePartialEditions(schema.Dialect(dialect), schema.PartialEditions{"oss": currentMigration}), - )) - require.NoError(err) - - assert.NoError(m.ApplyMigrations(ctx)) - state, err = m.CurrentState(ctx) - require.NoError(err) - want = &schema.State{ - Initialized: true, - Editions: []schema.EditionState{ - { - Name: "oss", - BinarySchemaVersion: currentMigration, - DatabaseSchemaVersion: currentMigration, - DatabaseSchemaState: schema.Equal, - }, - }, - } - require.Equal(want, state) -} - -func testOidcAuthToken(t *testing.T, conn *db.DB, kms *kms.Kms, wrapper wrapping.Wrapper, scopeId string) *authtoken.AuthToken { - t.Helper() - - authMethod := oidc.TestAuthMethod( - t, conn, wrapper, scopeId, oidc.ActivePrivateState, - "alice-rp", "fido", - oidc.WithIssuer(oidc.TestConvertToUrls(t, "https://www.alice.com")[0]), - oidc.WithSigningAlgs(oidc.RS256), - oidc.WithApiUrl(oidc.TestConvertToUrls(t, "https://www.alice.com/callback")[0]), - ) - acct := oidc.TestAccount(t, conn, authMethod, "test-subject") - - ctx := context.Background() - rw := db.New(conn) - iamRepo, err := iam.NewRepository(rw, rw, kms) - require.NoError(t, err) - - u := iam.TestUser(t, iamRepo, scopeId, iam.WithAccountIds(acct.PublicId)) - - repo, err := authtoken.NewRepository(rw, rw, kms) - require.NoError(t, err) - - at, err := repo.CreateAuthToken(ctx, u, acct.GetPublicId()) - require.NoError(t, err) - return at -} diff --git a/internal/db/schema/migrations/oss/postgres_16_05_test.go b/internal/db/schema/migrations/oss/postgres_16_05_test.go deleted file mode 100644 index a6c4bc081..000000000 --- a/internal/db/schema/migrations/oss/postgres_16_05_test.go +++ /dev/null @@ -1,183 +0,0 @@ -package oss_test - -import ( - "context" - "testing" - - "github.com/hashicorp/boundary/internal/authtoken" - "github.com/hashicorp/boundary/internal/credential" - "github.com/hashicorp/boundary/internal/credential/vault" - "github.com/hashicorp/boundary/internal/db" - "github.com/hashicorp/boundary/internal/db/common" - "github.com/hashicorp/boundary/internal/db/schema" - "github.com/hashicorp/boundary/internal/host/static" - "github.com/hashicorp/boundary/internal/iam" - "github.com/hashicorp/boundary/internal/kms" - "github.com/hashicorp/boundary/internal/session" - "github.com/hashicorp/boundary/internal/target" - "github.com/hashicorp/boundary/internal/target/tcp" - "github.com/hashicorp/boundary/testing/dbtest" - wrapping "github.com/hashicorp/go-kms-wrapping" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func TestMigrations_CredentialDimension(t *testing.T) { - const ( - priorMigration = 15002 - currentMigration = 16005 - ) - - t.Parallel() - assert, require := assert.New(t), require.New(t) - ctx := context.Background() - dialect := dbtest.Postgres - - c, u, _, err := dbtest.StartUsingTemplate(dialect, dbtest.WithTemplate(dbtest.Template1)) - require.NoError(err) - t.Cleanup(func() { - require.NoError(c()) - }) - d, err := common.SqlOpen(dialect, u) - require.NoError(err) - - // migration to the prior migration (before the one we want to test) - m, err := schema.NewManager(ctx, schema.Dialect(dialect), d, schema.WithEditions( - schema.TestCreatePartialEditions(schema.Dialect(dialect), schema.PartialEditions{"oss": priorMigration}), - )) - require.NoError(err) - - require.NoError(m.ApplyMigrations(ctx)) - state, err := m.CurrentState(ctx) - require.NoError(err) - want := &schema.State{ - Initialized: true, - Editions: []schema.EditionState{ - { - Name: "oss", - BinarySchemaVersion: priorMigration, - DatabaseSchemaVersion: priorMigration, - DatabaseSchemaState: schema.Equal, - }, - }, - } - require.Equal(want, state) - - dbType, err := db.StringToDbType(dialect) - require.NoError(err) - - // okay, now we can seed the database with test data - conn, err := db.Open(dbType, u) - require.NoError(err) - - rw := db.New(conn) - wrapper := db.TestWrapper(t) - - org, prj := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) - require.NotNil(prj) - assert.NotEmpty(prj.GetPublicId()) - - hc := static.TestCatalogs(t, conn, prj.GetPublicId(), 1)[0] - hs := static.TestSets(t, conn, hc.GetPublicId(), 1)[0] - h := static.TestHosts(t, conn, hc.GetPublicId(), 1)[0] - static.TestSetMembers(t, conn, hs.GetPublicId(), []*static.Host{h}) - - tar := tcp.TestTarget(t, conn, prj.GetPublicId(), "test", target.WithHostSources([]string{hs.GetPublicId()})) - var sessions []*session.Session - - kmsCache := kms.TestKms(t, conn, wrapper) - databaseWrapper, err := kmsCache.GetWrapper(ctx, org.GetPublicId(), kms.KeyPurposeDatabase) - require.NoError(err) - - { - at := authtoken.TestAuthToken(t, conn, kmsCache, org.GetPublicId()) - uId := at.GetIamUserId() - - sess := session.TestSession(t, conn, wrapper, session.ComposedOf{ - UserId: uId, - HostId: h.GetPublicId(), - TargetId: tar.GetPublicId(), - HostSetId: hs.GetPublicId(), - AuthTokenId: at.GetPublicId(), - ScopeId: prj.GetPublicId(), - Endpoint: "tcp://127.0.0.1:22", - }) - sessions = append(sessions, sess) - } - - { - at := testOidcAuthToken(t, conn, kmsCache, databaseWrapper, org.GetPublicId()) - uId := at.GetIamUserId() - creds := testSessionCredentialParams(t, conn, kmsCache, wrapper, tar) - - sess := session.TestSession(t, conn, wrapper, session.ComposedOf{ - UserId: uId, - HostId: h.GetPublicId(), - TargetId: tar.GetPublicId(), - HostSetId: hs.GetPublicId(), - AuthTokenId: at.GetPublicId(), - ScopeId: prj.GetPublicId(), - Endpoint: "tcp://127.0.0.1:22", - DynamicCredentials: creds, - }) - sessions = append(sessions, sess) - } - - sessionRepo, err := session.NewRepository(rw, rw, kmsCache) - require.NoError(err) - - count, err := sessionRepo.TerminateCompletedSessions(ctx) - require.NoError(err) - assert.Zero(count) - - for _, sess := range sessions { - // call TerminateSession - _, err = sessionRepo.TerminateSession(ctx, sess.GetPublicId(), 1, session.ClosedByUser) - assert.NoError(err) - } - - // now we're ready for the migration we want to test. - m, err = schema.NewManager(ctx, schema.Dialect(dialect), d, schema.WithEditions( - schema.TestCreatePartialEditions(schema.Dialect(dialect), schema.PartialEditions{"oss": currentMigration}), - )) - require.NoError(err) - - require.NoError(m.ApplyMigrations(ctx)) - state, err = m.CurrentState(ctx) - require.NoError(err) - want = &schema.State{ - Initialized: true, - Editions: []schema.EditionState{ - { - Name: "oss", - BinarySchemaVersion: currentMigration, - DatabaseSchemaVersion: currentMigration, - DatabaseSchemaState: schema.Equal, - }, - }, - } - require.Equal(want, state) -} - -func testSessionCredentialParams(t *testing.T, conn *db.DB, kms *kms.Kms, wrapper wrapping.Wrapper, tar target.Target) []*session.DynamicCredential { - t.Helper() - rw := db.New(conn) - - ctx := context.Background() - stores := vault.TestCredentialStores(t, conn, wrapper, tar.GetScopeId(), 1) - libIds := vault.TestCredentialLibraries(t, conn, wrapper, stores[0].GetPublicId(), 2) - libs := []*target.CredentialLibrary{ - target.TestNewCredentialLibrary(tar.GetPublicId(), libIds[0].GetPublicId(), credential.ApplicationPurpose), - target.TestNewCredentialLibrary(tar.GetPublicId(), libIds[1].GetPublicId(), credential.ApplicationPurpose), - } - - targetRepo, err := target.NewRepository(rw, rw, kms) - require.NoError(t, err) - _, _, _, err = targetRepo.AddTargetCredentialSources(ctx, tar.GetPublicId(), tar.GetVersion(), libs) - require.NoError(t, err) - creds := []*session.DynamicCredential{ - session.NewDynamicCredential(libIds[0].GetPublicId(), credential.ApplicationPurpose), - session.NewDynamicCredential(libIds[1].GetPublicId(), credential.ApplicationPurpose), - } - return creds -} diff --git a/internal/db/schema/migrations/oss/postgres_2_07_test.go b/internal/db/schema/migrations/oss/postgres_2_07_test.go deleted file mode 100644 index 4e8273148..000000000 --- a/internal/db/schema/migrations/oss/postgres_2_07_test.go +++ /dev/null @@ -1,126 +0,0 @@ -package oss_test - -import ( - "context" - "testing" - - "github.com/hashicorp/boundary/internal/auth/password" - "github.com/hashicorp/boundary/internal/db" - "github.com/hashicorp/boundary/internal/db/common" - "github.com/hashicorp/boundary/internal/db/schema" - "github.com/hashicorp/boundary/internal/iam" - "github.com/hashicorp/boundary/testing/dbtest" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -// Tests migration: -// migrations/oss/2/07_iam.up.sql -func Test_PrimaryAuthMethodChanges(t *testing.T) { - t.Parallel() - const priorMigration = 2006 - const primaryAuthMethodMigration = 2007 - t.Run("migrate-store", func(t *testing.T) { - // this is a sequential test which relies on: - // 1) initializing the db using a migration up to the "priorMigration" - // - // 2) seeding the database with some test scopes and auth methods - // - // 3) running the migrations that sets the primary auth methods for - // existing scopes which only have one auth method. - // - // 4) asserting some bits about the state of the db. - assert, require := assert.New(t), require.New(t) - dialect := dbtest.Postgres - ctx := context.Background() - - c, u, _, err := dbtest.StartUsingTemplate(dialect, dbtest.WithTemplate(dbtest.Template1)) - require.NoError(err) - t.Cleanup(func() { - require.NoError(c()) - }) - d, err := common.SqlOpen(dialect, u) - require.NoError(err) - - // migration to the prior migration (before the one we want to test) - m, err := schema.NewManager(ctx, schema.Dialect(dialect), d, schema.WithEditions( - schema.TestCreatePartialEditions(schema.Dialect(dialect), schema.PartialEditions{"oss": priorMigration}), - )) - require.NoError(err) - - assert.NoError(m.ApplyMigrations(ctx)) - state, err := m.CurrentState(ctx) - require.NoError(err) - want := &schema.State{ - Initialized: true, - Editions: []schema.EditionState{ - { - Name: "oss", - BinarySchemaVersion: priorMigration, - DatabaseSchemaVersion: priorMigration, - DatabaseSchemaState: schema.Equal, - }, - }, - } - assert.Equal(want, state) - - // okay, now we can seed the database with test data - dbType, err := db.StringToDbType(dialect) - require.NoError(err) - conn, err := db.Open(dbType, u) - require.NoError(err) - rootWrapper := db.TestWrapper(t) - iamRepo := iam.TestRepo(t, conn, rootWrapper) - org, _ := iam.TestScopes(t, iamRepo) - _ = password.TestAuthMethods(t, conn, org.PublicId, 3) - org2, _ := iam.TestScopes(t, iamRepo) - _ = password.TestAuthMethods(t, conn, org2.PublicId, 2) - - org3, _ := iam.TestScopes(t, iamRepo) - org3AuthMethods := password.TestAuthMethods(t, conn, org3.PublicId, 1) - org4, _ := iam.TestScopes(t, iamRepo) - org4AuthMethods := password.TestAuthMethods(t, conn, org4.PublicId, 1) - - // now we're ready for the migration we want to test. - m, err = schema.NewManager(ctx, schema.Dialect(dialect), d, schema.WithEditions( - schema.TestCreatePartialEditions(schema.Dialect(dialect), schema.PartialEditions{"oss": primaryAuthMethodMigration}), - )) - require.NoError(err) - - assert.NoError(m.ApplyMigrations(ctx)) - state, err = m.CurrentState(ctx) - require.NoError(err) - want = &schema.State{ - Initialized: true, - Editions: []schema.EditionState{ - { - Name: "oss", - BinarySchemaVersion: primaryAuthMethodMigration, - DatabaseSchemaVersion: primaryAuthMethodMigration, - DatabaseSchemaState: schema.Equal, - }, - }, - } - assert.Equal(want, state) - - entries, err := m.GetMigrationLog(ctx) - require.NoError(err) - assert.Equalf(2, len(entries), "expected 2 scopes without a primary auth method and got: %d", len(entries)) - - scope1, err := iamRepo.LookupScope(ctx, org.PublicId) - require.NoError(err) - assert.Empty(scope1.PrimaryAuthMethodId) - scope2, err := iamRepo.LookupScope(ctx, org2.PublicId) - require.NoError(err) - assert.Empty(scope2.PrimaryAuthMethodId) - - scope3, err := iamRepo.LookupScope(ctx, org3.PublicId) - require.NoError(err) - assert.Equal(org3AuthMethods[0].PublicId, scope3.PrimaryAuthMethodId) - - scope4, err := iamRepo.LookupScope(ctx, org4.PublicId) - require.NoError(err) - assert.Equal(org4AuthMethods[0].PublicId, scope4.PrimaryAuthMethodId) - }) -} diff --git a/internal/iam/repository_scope.go b/internal/iam/repository_scope.go index b5b89c3bc..39b8065fd 100644 --- a/internal/iam/repository_scope.go +++ b/internal/iam/repository_scope.go @@ -474,7 +474,7 @@ func (r *Repository) ListScopesRecursively(ctx context.Context, rootScopeId stri var where string var args []interface{} switch { - case rootScopeId == "global": + case rootScopeId == scope.Global.String(): // Nothing -- we want all scopes case strings.HasPrefix(rootScopeId, "o_"): // The org itself and any projects that have it as parent diff --git a/internal/iam/scope.go b/internal/iam/scope.go index 513dc16a4..e173f3794 100644 --- a/internal/iam/scope.go +++ b/internal/iam/scope.go @@ -2,6 +2,7 @@ package iam import ( "context" + "fmt" "strings" "github.com/hashicorp/boundary/internal/db" @@ -36,7 +37,7 @@ var ( func NewOrg(opt ...Option) (*Scope, error) { global := AllocScope() - global.PublicId = "global" + global.PublicId = scope.Global.String() return newScope(&global, opt...) } @@ -63,7 +64,7 @@ func newScope(parent *Scope, opt ...Option) (*Scope, error) { } var typ scope.Type switch { - case parent.PublicId == "global": + case parent.PublicId == scope.Global.String(): typ = scope.Org case strings.HasPrefix(parent.PublicId, scope.Org.Prefix()): typ = scope.Project @@ -129,8 +130,8 @@ func (s *Scope) VetForWrite(ctx context.Context, r db.Reader, opType db.OpType, case s.ParentId == "": return errors.New(ctx, errors.InvalidParameter, op, "scope must have a parent") case s.Type == scope.Org.String(): - if s.ParentId != "global" { - return errors.New(ctx, errors.InvalidParameter, op, `org's parent must be "global"`) + if s.ParentId != scope.Global.String() { + return errors.New(ctx, errors.InvalidParameter, op, fmt.Sprintf(`org's parent must be "%s"`, scope.Global.String())) } case s.Type == scope.Project.String(): parentScope := AllocScope() diff --git a/internal/kms/audit_key.go b/internal/kms/audit_key.go new file mode 100644 index 000000000..91bbb956d --- /dev/null +++ b/internal/kms/audit_key.go @@ -0,0 +1,82 @@ +package kms + +import ( + "context" + + "github.com/hashicorp/boundary/internal/db" + "github.com/hashicorp/boundary/internal/errors" + "github.com/hashicorp/boundary/internal/kms/store" + "google.golang.org/protobuf/proto" +) + +const ( + DefaultAuditKeyTableName = "kms_audit_key" +) + +type AuditKey struct { + *store.AuditKey + tableName string `gorm:"-"` +} + +// NewAuditKey creates a new in memory audit key. This key is used for crypto +// operations on audit entries. No options are currently supported. +func NewAuditKey(ctx context.Context, rootKeyId string, _ ...Option) (*AuditKey, error) { + const op = "kms.NewAuditKey" + if rootKeyId == "" { + return nil, errors.New(ctx, errors.InvalidParameter, op, "missing root key id") + } + k := &AuditKey{ + AuditKey: &store.AuditKey{ + RootKeyId: rootKeyId, + }, + } + return k, nil +} + +// AllocAuditKey will allocate a AuditKey +func AllocAuditKey() AuditKey { + return AuditKey{ + AuditKey: &store.AuditKey{}, + } +} + +// Clone creates a clone of the AuditKey +func (k *AuditKey) Clone() interface{} { + cp := proto.Clone(k.AuditKey) + return &AuditKey{ + AuditKey: cp.(*store.AuditKey), + } +} + +// VetForWrite implements db.VetForWrite() interface and validates the key +// before it's written. +func (k *AuditKey) VetForWrite(ctx context.Context, r db.Reader, opType db.OpType, opt ...db.Option) error { + const op = "kms.(AuditKey).VetForWrite" + if k.PrivateId == "" { + return errors.New(ctx, errors.InvalidParameter, op, "missing private id") + } + switch opType { + case db.CreateOp: + if k.RootKeyId == "" { + return errors.New(ctx, errors.InvalidParameter, op, "missing root key id") + } + case db.UpdateOp: + return errors.New(ctx, errors.InvalidParameter, op, "key is immutable") + } + return nil +} + +// TableName returns the tablename to override the default gorm table name +func (k *AuditKey) TableName() string { + if k.tableName != "" { + return k.tableName + } + return DefaultAuditKeyTableName +} + +// SetTableName sets the tablename and satisfies the ReplayableMessage +// interface. If the caller attempts to set the name to "" the name will be +// reset to the default name. +func (k *AuditKey) SetTableName(n string) { + k.tableName = n +} diff --git a/internal/kms/audit_key_test.go b/internal/kms/audit_key_test.go new file mode 100644 index 000000000..c6ab7f8c2 --- /dev/null +++ b/internal/kms/audit_key_test.go @@ -0,0 +1,207 @@ +package kms_test + +import ( + "context" + "testing" + + "github.com/hashicorp/boundary/internal/db" + "github.com/hashicorp/boundary/internal/errors" + "github.com/hashicorp/boundary/internal/iam" + "github.com/hashicorp/boundary/internal/kms" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "google.golang.org/protobuf/proto" +) + +// NOTE: there are no update tests since all the AuditKey attributes are +// immutable and those tests are covered by TestAuditKey_ImmutableFields + +func TestAuditKey_Create(t *testing.T) { + t.Parallel() + testCtx := context.Background() + conn, _ := db.TestSetup(t, "postgres") + wrapper := db.TestWrapper(t) + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + rk := kms.TestRootKey(t, conn, org.PublicId) + + type args struct { + rootKeyId string + opt []kms.Option + } + tests := []struct { + name string + args args + want *kms.AuditKey + wantErr bool + wantIsErr errors.Code + create bool + wantCreateErr bool + }{ + { + name: "empty-rootKeyId", + args: args{}, + wantErr: true, + wantIsErr: errors.InvalidParameter, + }, + { + name: "valid", + args: args{ + rootKeyId: rk.PrivateId, + }, + want: func() *kms.AuditKey { + k := kms.AllocAuditKey() + k.RootKeyId = rk.PrivateId + return &k + }(), + create: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + require.NoError(conn.Where("1=1").Delete(kms.AllocAuditKey()).Error) + got, err := kms.NewAuditKey(testCtx, tt.args.rootKeyId, tt.args.opt...) + if tt.wantErr { + require.Error(err) + assert.True(errors.Match(errors.T(tt.wantIsErr), err)) + return + } + require.NoError(err) + assert.Equal(tt.want, got) + if tt.create { + id, err := db.NewPublicId(kms.AuditKeyPrefix) + require.NoError(err) + got.PrivateId = id + err = db.New(conn).Create(context.Background(), got) + if tt.wantCreateErr { + assert.Error(err) + return + } else { + assert.NoError(err) + } + } + }) + } +} + +func TestAuditKey_Delete(t *testing.T) { + t.Parallel() + conn, _ := db.TestSetup(t, "postgres") + rw := db.New(conn) + wrapper := db.TestWrapper(t) + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + rk := kms.TestRootKey(t, conn, org.PublicId) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocAuditKey()).Error) + + tests := []struct { + name string + key *kms.AuditKey + wantRowsDeleted int + wantErr bool + wantErrMsg string + }{ + { + name: "valid", + key: kms.TestAuditKey(t, conn, rk.PrivateId), + wantErr: false, + wantRowsDeleted: 1, + }, + { + name: "bad-id", + key: func() *kms.AuditKey { + k := kms.AllocAuditKey() + id, err := db.NewPublicId(kms.AuditKeyPrefix) + require.NoError(t, err) + k.PrivateId = id + k.RootKeyId = rk.PrivateId + return &k + }(), + wantErr: false, + wantRowsDeleted: 0, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + deleteKey := kms.AllocAuditKey() + deleteKey.PrivateId = tt.key.PrivateId + deletedRows, err := rw.Delete(context.Background(), &deleteKey) + if tt.wantErr { + require.Error(err) + return + } + require.NoError(err) + if tt.wantRowsDeleted == 0 { + assert.Equal(tt.wantRowsDeleted, deletedRows) + return + } + assert.Equal(tt.wantRowsDeleted, deletedRows) + foundKey := kms.AllocAuditKey() + foundKey.PrivateId = tt.key.PrivateId + err = rw.LookupById(context.Background(), &foundKey) + require.Error(err) + assert.True(errors.IsNotFoundError(err)) + }) + } +} + +func TestAuditKey_Clone(t *testing.T) { + t.Parallel() + conn, _ := db.TestSetup(t, "postgres") + wrapper := db.TestWrapper(t) + t.Run("valid", func(t *testing.T) { + assert := assert.New(t) + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + rk := kms.TestRootKey(t, conn, org.PublicId) + k := kms.TestAuditKey(t, conn, rk.PrivateId) + cp := k.Clone() + assert.True(proto.Equal(cp.(*kms.AuditKey).AuditKey, k.AuditKey)) + }) + t.Run("not-equal", func(t *testing.T) { + assert := assert.New(t) + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + org2, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + rk := kms.TestRootKey(t, conn, org.PublicId) + rk2 := kms.TestRootKey(t, conn, org2.PublicId) + k := kms.TestAuditKey(t, conn, rk.PrivateId) + k2 := kms.TestAuditKey(t, conn, rk2.PrivateId) + + cp := k.Clone() + assert.True(!proto.Equal(cp.(*kms.AuditKey).AuditKey, k2.AuditKey)) + }) +} + +func TestAuditKey_SetTableName(t *testing.T) { + t.Parallel() + defaultTableName := kms.DefaultAuditKeyTableName + tests := []struct { + name string + setNameTo string + want string + }{ + { + name: "new-name", + setNameTo: "new-name", + want: "new-name", + }, + { + name: "reset to default", + setNameTo: "", + want: defaultTableName, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + def := kms.AllocAuditKey() + require.Equal(defaultTableName, def.TableName()) + s := kms.AllocAuditKey() + s.SetTableName(tt.setNameTo) + assert.Equal(tt.want, s.TableName()) + }) + } +} diff --git a/internal/kms/audit_key_version.go b/internal/kms/audit_key_version.go new file mode 100644 index 000000000..40c09ded5 --- /dev/null +++ b/internal/kms/audit_key_version.go @@ -0,0 +1,122 @@ +package kms + +import ( + "context" + + "github.com/hashicorp/boundary/internal/db" + "github.com/hashicorp/boundary/internal/errors" + "github.com/hashicorp/boundary/internal/kms/store" + wrapping "github.com/hashicorp/go-kms-wrapping" + "github.com/hashicorp/go-kms-wrapping/structwrapping" + "google.golang.org/protobuf/proto" +) + +const ( + DefaultAuditKeyVersionTableName = "kms_audit_key_version" +) + +type AuditKeyVersion struct { + *store.AuditKeyVersion + tableName string `gorm:"-"` +} + +// NewAuditKeyVersion creates a new in memory audit key version. This key is +// used for crypto operations on audit entries. No options are currently +// supported. +func NewAuditKeyVersion(ctx context.Context, auditKeyId string, key []byte, rootKeyVersionId string, _ ...Option) (*AuditKeyVersion, error) { + const op = "kms.NewAuditKeyVersion" + if auditKeyId == "" { + return nil, errors.New(ctx, errors.InvalidParameter, op, "missing audit key id") + } + if len(key) == 0 { + return nil, errors.New(ctx, errors.InvalidParameter, op, "missing key") + } + if rootKeyVersionId == "" { + return nil, errors.New(ctx, errors.InvalidParameter, op, "missing root key version id") + } + + k := &AuditKeyVersion{ + AuditKeyVersion: &store.AuditKeyVersion{ + AuditKeyId: auditKeyId, + RootKeyVersionId: rootKeyVersionId, + Key: key, + }, + } + return k, nil +} + +// AllocAuditKeyVersion allocates a AuditKeyVersion +func AllocAuditKeyVersion() AuditKeyVersion { + return AuditKeyVersion{ + AuditKeyVersion: &store.AuditKeyVersion{}, + } +} + +// Clone creates a clone of the AuditKeyVersion +func (k *AuditKeyVersion) Clone() interface{} { + cp := proto.Clone(k.AuditKeyVersion) + return &AuditKeyVersion{ + AuditKeyVersion: cp.(*store.AuditKeyVersion), + } +} + +// VetForWrite implements db.VetForWrite() interface and validates the audit key +// version before it's written. +func (k *AuditKeyVersion) VetForWrite(ctx context.Context, r db.Reader, opType db.OpType, opt ...db.Option) error { + const op = "kms.(AuditKeyVersion).VetForWrite" + if k.PrivateId == "" { + return errors.New(ctx, errors.InvalidParameter, op, "missing private id") + } + switch opType { + case db.CreateOp: + if k.CtKey == nil { + return errors.New(ctx, errors.InvalidParameter, op, "missing key") + } + if k.AuditKeyId == "" { + return errors.New(ctx, errors.InvalidParameter, op, "missing audit key id") + } + if k.RootKeyVersionId == "" { + return errors.New(ctx, errors.InvalidParameter, op, "missing root key version id") + } + case db.UpdateOp: + return errors.New(ctx, errors.InvalidParameter, op, "key is immutable") + } + return nil +} + +// TableName returns the tablename to override the default gorm table name +func (k *AuditKeyVersion) TableName() string { + if k.tableName != "" { + return k.tableName + } + return DefaultAuditKeyVersionTableName +} + +// SetTableName sets the tablename and satisfies the ReplayableMessage +// interface. If the caller attempts to set the name to "" the name will be +// reset to the default name. +func (k *AuditKeyVersion) SetTableName(n string) { + k.tableName = n +} + +// Encrypt will encrypt the audit key version's key +func (k *AuditKeyVersion) Encrypt(ctx context.Context, cipher wrapping.Wrapper) error { + const op = "kms.(AuditKeyVersion).Encrypt" + // structwrapping doesn't support embedding, so we'll pass in the + // store.AuditKeyVersion directly + if err := structwrapping.WrapStruct(ctx, cipher, k.AuditKeyVersion, nil); err != nil { + return errors.Wrap(ctx, err, op, errors.WithCode(errors.Encrypt)) + } + return nil +} + +// Decrypt will decrypt the audit key version's key +func (k *AuditKeyVersion) Decrypt(ctx context.Context, cipher wrapping.Wrapper) error { + const op = "kms.(AuditKeyVersion).Decrypt" + // structwrapping doesn't support embedding, so we'll pass in the + // store.AuditKeyVersion directly + if err := structwrapping.UnwrapStruct(ctx, cipher, k.AuditKeyVersion, nil); err != nil { + return errors.Wrap(ctx, err, op, errors.WithCode(errors.Decrypt)) + } + return nil +} diff --git a/internal/kms/audit_key_version_test.go b/internal/kms/audit_key_version_test.go new file mode 100644 index 000000000..80fd88a62 --- /dev/null +++ b/internal/kms/audit_key_version_test.go @@ -0,0 +1,250 @@ +package kms_test + +import ( + "context" + "testing" + + "github.com/hashicorp/boundary/internal/db" + "github.com/hashicorp/boundary/internal/errors" + "github.com/hashicorp/boundary/internal/iam" + "github.com/hashicorp/boundary/internal/kms" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "google.golang.org/protobuf/proto" +) + +// NOTE: there are no update tests since all the AuditKeyVersion attributes are +// immutable and those tests are covered by TestAuditKey_ImmutableFields + +func TestAuditKeyVersion_Create(t *testing.T) { + t.Parallel() + testCtx := context.Background() + conn, _ := db.TestSetup(t, "postgres") + wrapper := db.TestWrapper(t) + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + rk := kms.TestRootKey(t, conn, org.PublicId) + rkv, rkvWrapper := kms.TestRootKeyVersion(t, conn, wrapper, rk.PrivateId) + + dk := kms.TestAuditKey(t, conn, rk.PrivateId) + + type args struct { + AuditKeyId string + key []byte + rootKeyVersionId string + opt []kms.Option + } + tests := []struct { + name string + args args + want *kms.AuditKeyVersion + wantErr bool + wantIsErr errors.Code + create bool + wantCreateErr bool + }{ + { + name: "empty-audit-id", + args: args{ + key: []byte("audit key"), + rootKeyVersionId: rkv.PrivateId, + }, + wantErr: true, + wantIsErr: errors.InvalidParameter, + }, + { + name: "empty-key", + args: args{ + AuditKeyId: dk.PrivateId, + rootKeyVersionId: rkv.PrivateId, + }, + wantErr: true, + wantIsErr: errors.InvalidParameter, + }, + { + name: "empty-root-key-version-id", + args: args{ + AuditKeyId: dk.PrivateId, + key: []byte("audit key"), + }, + wantErr: true, + wantIsErr: errors.InvalidParameter, + }, + { + name: "valid", + args: args{ + AuditKeyId: dk.PrivateId, + key: []byte("audit key"), + rootKeyVersionId: rkv.PrivateId, + }, + want: func() *kms.AuditKeyVersion { + k := kms.AllocAuditKeyVersion() + k.RootKeyVersionId = rkv.PrivateId + k.Key = []byte("audit key") + k.AuditKeyId = dk.PrivateId + return &k + }(), + create: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + require.NoError(conn.Where("1=1").Delete(kms.AllocAuditKeyVersion()).Error) + got, err := kms.NewAuditKeyVersion(testCtx, tt.args.AuditKeyId, tt.args.key, tt.args.rootKeyVersionId, tt.args.opt...) + if tt.wantErr { + require.Error(err) + assert.True(errors.Match(errors.T(tt.wantIsErr), err)) + return + } + require.NoError(err) + assert.Equal(tt.want, got) + if tt.create { + id, err := db.NewPublicId(kms.AuditKeyPrefix) + require.NoError(err) + got.PrivateId = id + err = got.Encrypt(context.Background(), rkvWrapper) + require.NoError(err) + err = db.New(conn).Create(context.Background(), got) + if tt.wantCreateErr { + assert.Error(err) + return + } else { + assert.NoError(err) + } + } + }) + } +} + +func TestAuditKeyVersion_Delete(t *testing.T) { + t.Parallel() + conn, _ := db.TestSetup(t, "postgres") + rw := db.New(conn) + wrapper := db.TestWrapper(t) + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + rk := kms.TestRootKey(t, conn, org.PublicId) + _, rkvWrapper := kms.TestRootKeyVersion(t, conn, wrapper, rk.PrivateId) + dk := kms.TestAuditKey(t, conn, rk.PrivateId) + + require.NoError(t, conn.Where("1=1").Delete(kms.AllocAuditKeyVersion()).Error) + + tests := []struct { + name string + key *kms.AuditKeyVersion + wantRowsDeleted int + wantErr bool + wantErrMsg string + }{ + { + name: "valid", + key: kms.TestAuditKeyVersion(t, conn, rkvWrapper, dk.PrivateId, []byte("audit key")), + wantErr: false, + wantRowsDeleted: 1, + }, + { + name: "bad-id", + key: func() *kms.AuditKeyVersion { + k := kms.AllocAuditKeyVersion() + id, err := db.NewPublicId(kms.AuditKeyVersionPrefix) + require.NoError(t, err) + k.PrivateId = id + return &k + }(), + wantErr: false, + wantRowsDeleted: 0, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + deleteKey := kms.AllocAuditKeyVersion() + deleteKey.PrivateId = tt.key.PrivateId + deletedRows, err := rw.Delete(context.Background(), &deleteKey) + if tt.wantErr { + require.Error(err) + return + } + require.NoError(err) + if tt.wantRowsDeleted == 0 { + assert.Equal(tt.wantRowsDeleted, deletedRows) + return + } + assert.Equal(tt.wantRowsDeleted, deletedRows) + foundKey := kms.AllocAuditKeyVersion() + foundKey.PrivateId = tt.key.PrivateId + err = rw.LookupById(context.Background(), &foundKey) + require.Error(err) + assert.True(errors.IsNotFoundError(err)) + }) + } +} + +func TestAuditKeyVersion_Clone(t *testing.T) { + t.Parallel() + conn, _ := db.TestSetup(t, "postgres") + wrapper := db.TestWrapper(t) + t.Run("valid", func(t *testing.T) { + assert := assert.New(t) + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + + rk := kms.TestRootKey(t, conn, org.PublicId) + _, rkvWrapper := kms.TestRootKeyVersion(t, conn, wrapper, rk.PrivateId) + + k := kms.TestAuditKey(t, conn, rk.PrivateId) + kv := kms.TestAuditKeyVersion(t, conn, rkvWrapper, k.PrivateId, []byte("test db key")) + cp := kv.Clone() + assert.True(proto.Equal(cp.(*kms.AuditKeyVersion).AuditKeyVersion, kv.AuditKeyVersion)) + }) + t.Run("not-equal", func(t *testing.T) { + assert := assert.New(t) + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + org2, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + rk := kms.TestRootKey(t, conn, org.PublicId) + rk2 := kms.TestRootKey(t, conn, org2.PublicId) + _, rkvWrapper := kms.TestRootKeyVersion(t, conn, wrapper, rk.PrivateId) + _, rkvWrapper2 := kms.TestRootKeyVersion(t, conn, wrapper, rk2.PrivateId) + + k := kms.TestAuditKey(t, conn, rk.PrivateId) + k2 := kms.TestAuditKey(t, conn, rk2.PrivateId) + kv := kms.TestAuditKeyVersion(t, conn, rkvWrapper, k.PrivateId, []byte("test db key")) + kv2 := kms.TestAuditKeyVersion(t, conn, rkvWrapper2, k2.PrivateId, []byte("test db key 2")) + + cp := kv.Clone() + assert.True(!proto.Equal(cp.(*kms.AuditKeyVersion).AuditKeyVersion, kv2.AuditKeyVersion)) + }) +} + +func TestAuditKeyVersion_SetTableName(t *testing.T) { + t.Parallel() + defaultTableName := kms.DefaultAuditKeyVersionTableName + tests := []struct { + name string + setNameTo string + want string + }{ + { + name: "new-name", + setNameTo: "new-name", + want: "new-name", + }, + { + name: "reset to default", + setNameTo: "", + want: defaultTableName, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + def := kms.AllocAuditKeyVersion() + require.Equal(defaultTableName, def.TableName()) + s := kms.AllocAuditKeyVersion() + s.SetTableName(tt.setNameTo) + assert.Equal(tt.want, s.TableName()) + }) + } +} diff --git a/internal/kms/const.go b/internal/kms/const.go index a9641cfdf..1ffba56f9 100644 --- a/internal/kms/const.go +++ b/internal/kms/const.go @@ -28,6 +28,9 @@ const ( // KeyPurposeOidc is used for encrypting oidc states included in // authentication URLs KeyPurposeOidc + + // KeyPurposeAudit is used for audit operations + KeyPurposeAudit ) // String returns the key purpose cast as a string, just so it can be called as @@ -46,6 +49,8 @@ func (k KeyPurpose) String() string { return "sessions" case KeyPurposeOidc: return "oidc" + case KeyPurposeAudit: + return "audit" default: return "unknown" } @@ -69,6 +74,8 @@ const ( KeyTypeSessionKeyVersion KeyTypeOidcKey KeyTypeOidcKeyVersion + KeyTypeAuditKey + KeyTypeAuditKeyVersion ) // String returns the key type cast as a string, just so it can be called as @@ -99,6 +106,10 @@ func (k KeyType) String() string { return "oidcKey" case KeyTypeOidcKeyVersion: return "oidcKeyVersion" + case KeyTypeAuditKey: + return "auditKey" + case KeyTypeAuditKeyVersion: + return "auditKeyVersion" default: return "unknown" diff --git a/internal/kms/ids.go b/internal/kms/ids.go index b408ca667..d4c021ff0 100644 --- a/internal/kms/ids.go +++ b/internal/kms/ids.go @@ -1,6 +1,8 @@ package kms import ( + "context" + "github.com/hashicorp/boundary/internal/db" "github.com/hashicorp/boundary/internal/errors" ) @@ -18,6 +20,8 @@ const ( SessionKeyVersionPrefix = "kskv" OidcKeyPrefix = "koidck" OidcKeyVersionPrefix = "koidckv" + AuditKeyPrefix = "kak" + AuditKeyVersionPrefix = "kakv" ) func newRootKeyId() (string, error) { @@ -127,3 +131,21 @@ func newOidcKeyVersionId() (string, error) { } return id, nil } + +func newAuditKeyId(ctx context.Context) (string, error) { + const op = "kms.newAuditKeyId" + id, err := db.NewPublicId(AuditKeyPrefix) + if err != nil { + return "", errors.Wrap(ctx, err, op) + } + return id, nil +} + +func newAuditKeyVersionId(ctx context.Context) (string, error) { + const op = "kms.newAuditKeyVersionId" + id, err := db.NewPublicId(AuditKeyVersionPrefix) + if err != nil { + return "", errors.Wrap(ctx, err, op) + } + return id, nil +} diff --git a/internal/kms/ids_test.go b/internal/kms/ids_test.go index f6c6a750e..3cb2a3b51 100644 --- a/internal/kms/ids_test.go +++ b/internal/kms/ids_test.go @@ -1,6 +1,7 @@ package kms import ( + "context" "strings" "testing" @@ -70,4 +71,14 @@ func Test_Ids(t *testing.T) { require.NoError(t, err) assert.True(t, strings.HasPrefix(id, OidcKeyVersionPrefix+"_")) }) + t.Run("kak", func(t *testing.T) { + id, err := newAuditKeyId(context.Background()) + require.NoError(t, err) + assert.True(t, strings.HasPrefix(id, AuditKeyPrefix+"_")) + }) + t.Run("kakv", func(t *testing.T) { + id, err := newAuditKeyVersionId(context.Background()) + require.NoError(t, err) + assert.True(t, strings.HasPrefix(id, AuditKeyVersionPrefix+"_")) + }) } diff --git a/internal/kms/immutable_fields_test.go b/internal/kms/immutable_fields_test.go index 12f38ed09..bc4528ae8 100644 --- a/internal/kms/immutable_fields_test.go +++ b/internal/kms/immutable_fields_test.go @@ -997,3 +997,170 @@ func TestOidcKeyVersion_ImmutableFields(t *testing.T) { }) } } + +func TestAuditKey_ImmutableFields(t *testing.T) { + t.Parallel() + conn, _ := db.TestSetup(t, "postgres") + rw := db.New(conn) + + ts := timestamp.Timestamp{Timestamp: ×tamppb.Timestamp{Seconds: 0, Nanos: 0}} + + wrapper := db.TestWrapper(t) + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocAuditKey()).Error) + rk := kms.TestRootKey(t, conn, org.PublicId) + new := kms.TestAuditKey(t, conn, rk.PrivateId) + + tests := []struct { + name string + update *kms.AuditKey + fieldMask []string + }{ + { + name: "private_id", + update: func() *kms.AuditKey { + k := new.Clone().(*kms.AuditKey) + k.PrivateId = "o_thisIsNotAValidId" + return k + }(), + fieldMask: []string{"PrivateId"}, + }, + { + name: "create time", + update: func() *kms.AuditKey { + k := new.Clone().(*kms.AuditKey) + k.CreateTime = &ts + return k + }(), + fieldMask: []string{"CreateTime"}, + }, + { + name: "root_key_id", + update: func() *kms.AuditKey { + k := new.Clone().(*kms.AuditKey) + k.RootKeyId = "o_thisIsNotAValidId" + return k + }(), + fieldMask: []string{"ScopeId"}, + }, + } + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + orig := new.Clone() + err := rw.LookupById(context.Background(), orig) + require.NoError(err) + + rowsUpdated, err := rw.Update(context.Background(), tt.update, tt.fieldMask, nil, db.WithSkipVetForWrite(true)) + require.Error(err) + assert.Equal(0, rowsUpdated) + + after := new.Clone() + err = rw.LookupById(context.Background(), after) + require.NoError(err) + + assert.True(proto.Equal(orig.(*kms.AuditKey), after.(*kms.AuditKey))) + }) + } +} + +func TestAuditKeyVersion_ImmutableFields(t *testing.T) { + t.Parallel() + conn, _ := db.TestSetup(t, "postgres") + wrapper := db.TestWrapper(t) + rw := db.New(conn) + + ts := timestamp.Timestamp{Timestamp: ×tamppb.Timestamp{Seconds: 0, Nanos: 0}} + + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + rk := kms.TestRootKey(t, conn, org.PublicId) + _, rkvWrapper := kms.TestRootKeyVersion(t, conn, wrapper, rk.PrivateId) + conn.Debug(true) + dk := kms.TestAuditKey(t, conn, rk.PrivateId) + new := kms.TestAuditKeyVersion(t, conn, rkvWrapper, dk.PrivateId, []byte("audit key")) + + tests := []struct { + name string + update *kms.AuditKeyVersion + fieldMask []string + }{ + { + name: "private_id", + update: func() *kms.AuditKeyVersion { + k := new.Clone().(*kms.AuditKeyVersion) + k.PrivateId = "o_thisIsNotAValidId" + return k + }(), + fieldMask: []string{"PrivateId"}, + }, + { + name: "create time", + update: func() *kms.AuditKeyVersion { + k := new.Clone().(*kms.AuditKeyVersion) + k.CreateTime = &ts + return k + }(), + fieldMask: []string{"CreateTime"}, + }, + { + name: "audit_key_id", + update: func() *kms.AuditKeyVersion { + k := new.Clone().(*kms.AuditKeyVersion) + k.AuditKeyId = "o_thisIsNotAValidId" + return k + }(), + fieldMask: []string{"RootKeyId"}, + }, + { + name: "root_key_version_id", + update: func() *kms.AuditKeyVersion { + k := new.Clone().(*kms.AuditKeyVersion) + k.RootKeyVersionId = "o_thisIsNotAValidId" + return k + }(), + fieldMask: []string{"RootKeyId"}, + }, + { + name: "version", + update: func() *kms.AuditKeyVersion { + k := new.Clone().(*kms.AuditKeyVersion) + k.Version = uint32(22) + return k + }(), + fieldMask: []string{"Version"}, + }, + { + name: "key", + update: func() *kms.AuditKeyVersion { + k := new.Clone().(*kms.AuditKeyVersion) + k.Key = []byte("updated key") + return k + }(), + fieldMask: []string{"CtKey"}, + }, + } + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + orig := new.Clone() + err := rw.LookupById(context.Background(), orig) + require.NoError(err) + + err = tt.update.Encrypt(context.Background(), wrapper) + require.NoError(err) + rowsUpdated, err := rw.Update(context.Background(), tt.update, tt.fieldMask, nil, db.WithSkipVetForWrite(true)) + require.Error(err) + assert.Equal(0, rowsUpdated) + + after := new.Clone() + err = rw.LookupById(context.Background(), after) + require.NoError(err) + + assert.True(proto.Equal(orig.(*kms.AuditKeyVersion), after.(*kms.AuditKeyVersion))) + }) + } +} diff --git a/internal/kms/kms.go b/internal/kms/kms.go index 9e0f64e36..5675d7bf3 100644 --- a/internal/kms/kms.go +++ b/internal/kms/kms.go @@ -152,7 +152,7 @@ func (k *Kms) GetWrapper(ctx context.Context, scopeId string, purpose KeyPurpose } switch purpose { - case KeyPurposeOplog, KeyPurposeDatabase, KeyPurposeTokens, KeyPurposeSessions, KeyPurposeOidc: + case KeyPurposeOplog, KeyPurposeDatabase, KeyPurposeTokens, KeyPurposeSessions, KeyPurposeOidc, KeyPurposeAudit: case KeyPurposeUnknown: return nil, errors.New(ctx, errors.InvalidParameter, op, "missing key purpose") default: @@ -309,6 +309,8 @@ func (k *Kms) loadDek(ctx context.Context, scopeId string, purpose KeyPurpose, r keys, err = repo.ListSessionKeys(ctx) case KeyPurposeOidc: keys, err = repo.ListOidcKeys(ctx) + case KeyPurposeAudit: + keys, err = repo.ListAuditKeys(ctx) default: return nil, errors.New(ctx, errors.InvalidParameter, op, "unknown or invalid DEK purpose specified") } @@ -338,6 +340,8 @@ func (k *Kms) loadDek(ctx context.Context, scopeId string, purpose KeyPurpose, r keyVersions, err = repo.ListSessionKeyVersions(ctx, rootWrapper, keyId, WithOrderByVersion(db.DescendingOrderBy)) case KeyPurposeOidc: keyVersions, err = repo.ListOidcKeyVersions(ctx, rootWrapper, keyId, WithOrderByVersion(db.DescendingOrderBy)) + case KeyPurposeAudit: + keyVersions, err = repo.ListAuditKeyVersions(ctx, rootWrapper, keyId, WithOrderByVersion(db.DescendingOrderBy)) default: return nil, errors.New(ctx, errors.InvalidParameter, op, "unknown or invalid DEK purpose specified") } diff --git a/internal/kms/repository.go b/internal/kms/repository.go index 25dc99588..ac8b579c2 100644 --- a/internal/kms/repository.go +++ b/internal/kms/repository.go @@ -7,6 +7,7 @@ import ( "github.com/hashicorp/boundary/internal/db" "github.com/hashicorp/boundary/internal/errors" + "github.com/hashicorp/boundary/internal/types/scope" wrapping "github.com/hashicorp/go-kms-wrapping" "github.com/hashicorp/go-kms-wrapping/wrappers/aead" "github.com/hashicorp/go-uuid" @@ -161,7 +162,6 @@ func CreateKeysTx(ctx context.Context, dbReader db.Reader, dbWriter db.Writer, r if err != nil { return nil, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("unable to create oidc key in scope %s", scopeId))) } - keys := Keys{ KeyTypeRootKey: rootKey, KeyTypeRootKeyVersion: rootKeyVersion, @@ -176,6 +176,15 @@ func CreateKeysTx(ctx context.Context, dbReader db.Reader, dbWriter db.Writer, r KeyTypeOidcKey: oidcKey, KeyTypeOidcKeyVersion: oidcKeyVersion, } + if scopeId == scope.Global.String() { + auditKey, auditKeyVersion, err := createAuditKeyTx(ctx, dbReader, dbWriter, rkvWrapper, k) + if err != nil { + return nil, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("unable to create audit key in scope %s", scopeId))) + } + keys[KeyTypeAuditKey] = auditKey + keys[KeyTypeAuditKeyVersion] = auditKeyVersion + } + return keys, nil } diff --git a/internal/kms/repository_audit_key.go b/internal/kms/repository_audit_key.go new file mode 100644 index 000000000..efbfccbf1 --- /dev/null +++ b/internal/kms/repository_audit_key.go @@ -0,0 +1,160 @@ +package kms + +import ( + "context" + "fmt" + "strings" + + "github.com/hashicorp/boundary/internal/db" + "github.com/hashicorp/boundary/internal/errors" + wrapping "github.com/hashicorp/go-kms-wrapping" +) + +// CreateAuditKey inserts into the repository and returns the new audit key and +// audit key version. There are no valid options at this time. +func (r *Repository) CreateAuditKey(ctx context.Context, rkvWrapper wrapping.Wrapper, key []byte, _ ...Option) (*AuditKey, *AuditKeyVersion, error) { + const op = "kms.(Repository).CreateAuditKey" + var returnedDk, returnedDv interface{} + _, err := r.writer.DoTx( + ctx, + db.StdRetryCnt, + db.ExpBackoff{}, + func(reader db.Reader, w db.Writer) error { + var err error + if returnedDk, returnedDv, err = createAuditKeyTx(ctx, reader, w, rkvWrapper, key); err != nil { + return errors.Wrap(ctx, err, op) + } + return nil + }, + ) + if err != nil { + return nil, nil, errors.Wrap(ctx, err, op) + } + return returnedDk.(*AuditKey), returnedDv.(*AuditKeyVersion), nil +} + +// createAuditKeyTx inserts into the db (via db.Writer) and returns the new audit key +// and audit key version. This function encapsulates all the work required within +// a db.TxHandler and allows this capability to be shared with the iam repo. +func createAuditKeyTx(ctx context.Context, r db.Reader, w db.Writer, rkvWrapper wrapping.Wrapper, key []byte) (*AuditKey, *AuditKeyVersion, error) { + const op = "kms.createAuditKeyTx" + if rkvWrapper == nil { + return nil, nil, errors.New(ctx, errors.InvalidParameter, op, "missing key wrapper") + } + if len(key) == 0 { + return nil, nil, errors.New(ctx, errors.InvalidParameter, op, "missing key") + } + rootKeyVersionId := rkvWrapper.KeyID() + switch { + case !strings.HasPrefix(rootKeyVersionId, RootKeyVersionPrefix): + return nil, nil, errors.New(ctx, errors.InvalidParameter, op, fmt.Sprintf("root key version id %s doesn't start with prefix %s", rootKeyVersionId, RootKeyVersionPrefix)) + case rootKeyVersionId == "": + return nil, nil, errors.New(ctx, errors.InvalidParameter, op, "missing root key version id") + } + rv := AllocRootKeyVersion() + rv.PrivateId = rootKeyVersionId + err := r.LookupById(ctx, &rv) + if err != nil { + return nil, nil, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("unable to lookup root key version %s", rootKeyVersionId))) + } + + dk := AllocAuditKey() + dv := AllocAuditKeyVersion() + id, err := newAuditKeyId(ctx) + if err != nil { + return nil, nil, errors.Wrap(ctx, err, op) + } + dk.PrivateId = id + dk.RootKeyId = rv.RootKeyId + + id, err = newAuditKeyVersionId(ctx) + if err != nil { + return nil, nil, errors.Wrap(ctx, err, op) + } + dv.PrivateId = id + dv.AuditKeyId = dk.PrivateId + dv.RootKeyVersionId = rootKeyVersionId + dv.Key = key + if err := dv.Encrypt(ctx, rkvWrapper); err != nil { + return nil, nil, errors.Wrap(ctx, err, op) + } + + // no oplog entries for keys + if err := w.Create(ctx, &dk); err != nil { + return nil, nil, errors.Wrap(ctx, err, op, errors.WithMsg("keys create")) + } + // no oplog entries for key versions + if err := w.Create(ctx, &dv); err != nil { + return nil, nil, errors.Wrap(ctx, err, op, errors.WithMsg("key versions create")) + } + + return &dk, &dv, nil +} + +// LookupAuditKey will look up a key in the repository. If the key is not +// found, it will return nil, nil. +func (r *Repository) LookupAuditKey(ctx context.Context, privateId string, _ ...Option) (*AuditKey, error) { + const op = "kms.(Repository).LookupAuditKey" + if privateId == "" { + return nil, errors.New(ctx, errors.InvalidParameter, op, "missing private id") + } + k := AllocAuditKey() + k.PrivateId = privateId + if err := r.reader.LookupById(ctx, &k); err != nil { + return nil, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("failed for %s", privateId))) + } + return &k, nil +} + +// DeleteAuditKey deletes the key for the provided id from the +// repository returning a count of the number of records deleted. All options +// are ignored. +func (r *Repository) DeleteAuditKey(ctx context.Context, privateId string, _ ...Option) (int, error) { + const op = "kms.(Repository).DeleteAuditKey" + if privateId == "" { + return db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "missing private id") + } + k := AllocAuditKey() + k.PrivateId = privateId + if err := r.reader.LookupById(ctx, &k); err != nil { + return db.NoRowsAffected, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("failed for %s", privateId))) + } + + var rowsDeleted int + _, err := r.writer.DoTx( + ctx, + db.StdRetryCnt, + db.ExpBackoff{}, + func(_ db.Reader, w db.Writer) (err error) { + dk := k.Clone() + // no oplog entries for root keys + rowsDeleted, err = w.Delete(ctx, dk) + if err != nil { + return errors.Wrap(ctx, err, op) + } + if rowsDeleted > 1 { + return errors.New(ctx, errors.MultipleRecords, op, "more than 1 resource would have been deleted") + } + return nil + }, + ) + if err != nil { + return db.NoRowsAffected, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("failed for %s", privateId))) + } + return rowsDeleted, nil +} + +// ListAuditKeys will list the keys. Supports the WithLimit option. +func (r *Repository) ListAuditKeys(ctx context.Context, opt ...Option) ([]Dek, error) { + const op = "kms.(Repository).ListAuditKeys" + var keys []*AuditKey + err := r.list(ctx, &keys, "1=1", nil, opt...) + if err != nil { + return nil, errors.Wrap(ctx, err, op) + } + deks := make([]Dek, 0, len(keys)) + for _, key := range keys { + deks = append(deks, key) + } + return deks, nil +} diff --git a/internal/kms/repository_audit_key_test.go b/internal/kms/repository_audit_key_test.go new file mode 100644 index 000000000..5ee2ccd4e --- /dev/null +++ b/internal/kms/repository_audit_key_test.go @@ -0,0 +1,297 @@ +package kms_test + +import ( + "context" + "testing" + "time" + + "github.com/hashicorp/boundary/internal/db" + "github.com/hashicorp/boundary/internal/errors" + "github.com/hashicorp/boundary/internal/iam" + "github.com/hashicorp/boundary/internal/kms" + "github.com/hashicorp/boundary/internal/oplog" + wrapping "github.com/hashicorp/go-kms-wrapping" + "github.com/hashicorp/go-kms-wrapping/wrappers/aead" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "google.golang.org/protobuf/proto" +) + +func TestRepository_CreateAuditKey(t *testing.T) { + t.Parallel() + conn, _ := db.TestSetup(t, "postgres") + rw := db.New(conn) + wrapper := db.TestWrapper(t) + repo, err := kms.NewRepository(rw, rw) + require.NoError(t, err) + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + rk := kms.TestRootKey(t, conn, org.PublicId) + _, rkvWrapper := kms.TestRootKeyVersion(t, conn, wrapper, rk.PrivateId) + + type args struct { + scopeId string + key []byte + keyWrapper wrapping.Wrapper + opt []kms.Option + } + tests := []struct { + name string + args args + wantErr bool + wantIsError errors.Code + }{ + { + name: "valid-org", + args: args{ + scopeId: org.PublicId, + key: []byte("test key"), + keyWrapper: rkvWrapper, + }, + wantErr: false, + }, + { + name: "nil-key", + args: args{ + scopeId: org.PublicId, + keyWrapper: rkvWrapper, + }, + wantErr: true, + wantIsError: errors.InvalidParameter, + }, + { + name: "empty-key", + args: args{ + scopeId: org.PublicId, + keyWrapper: rkvWrapper, + key: []byte(""), + }, + wantErr: true, + wantIsError: errors.InvalidParameter, + }, + { + name: "nil-wrapper", + args: args{ + scopeId: org.PublicId, + key: []byte("test key"), + keyWrapper: nil, + }, + wantErr: true, + wantIsError: errors.InvalidParameter, + }, + { + name: "not-rkv-wrapper", + args: args{ + scopeId: org.PublicId, + key: []byte("test key"), + keyWrapper: wrapper, + }, + wantErr: true, + wantIsError: errors.InvalidParameter, + }, + { + name: "wrapper-missing-id", + args: args{ + scopeId: org.PublicId, + key: []byte("test key"), + keyWrapper: func() wrapping.Wrapper { + w := db.TestWrapper(t) + _, err = w.(*aead.Wrapper).SetConfig(map[string]string{ + "key_id": "", + }) + require.NoError(t, err) + return w + }(), + }, + wantErr: true, + wantIsError: errors.InvalidParameter, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + dk, dv, err := repo.CreateAuditKey(context.Background(), tt.args.keyWrapper, tt.args.key, tt.args.opt...) + if tt.wantErr { + assert.Error(err) + assert.Nil(dk) + assert.True(errors.Match(errors.T(tt.wantIsError), err)) + return + } + require.NoError(err) + assert.NotNil(dk.CreateTime) + foundKey, err := repo.LookupAuditKey(context.Background(), dk.PrivateId) + assert.NoError(err) + assert.True(proto.Equal(foundKey, dk)) + + // make sure there was no oplog written + err = db.TestVerifyOplog(t, rw, dk.PrivateId, db.WithOperation(oplog.OpType_OP_TYPE_CREATE), db.WithCreateNotBefore(10*time.Second)) + assert.Error(err) + assert.True(errors.IsNotFoundError(err)) + + assert.NotNil(dv.CreateTime) + foundKeyVersion, err := repo.LookupAuditKeyVersion(context.Background(), tt.args.keyWrapper, dv.PrivateId) + assert.NoError(err) + assert.True(proto.Equal(foundKeyVersion, dv)) + + // make sure there was no oplog written + err = db.TestVerifyOplog(t, rw, dv.PrivateId, db.WithOperation(oplog.OpType_OP_TYPE_CREATE), db.WithCreateNotBefore(10*time.Second)) + assert.Error(err) + assert.True(errors.IsNotFoundError(err)) + }) + } +} + +func TestRepository_DeleteAuditKey(t *testing.T) { + t.Parallel() + conn, _ := db.TestSetup(t, "postgres") + rw := db.New(conn) + wrapper := db.TestWrapper(t) + repo, err := kms.NewRepository(rw, rw) + require.NoError(t, err) + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + rk := kms.TestRootKey(t, conn, org.PublicId) + + type args struct { + key *kms.AuditKey + opt []kms.Option + } + tests := []struct { + name string + args args + wantRowsDeleted int + wantErr bool + wantIsError errors.Code + }{ + { + name: "valid", + args: args{ + key: kms.TestAuditKey(t, conn, rk.PrivateId), + }, + wantRowsDeleted: 1, + wantErr: false, + }, + { + name: "no-private-id", + args: args{ + key: func() *kms.AuditKey { + k := kms.AllocAuditKey() + return &k + }(), + }, + wantRowsDeleted: 0, + wantErr: true, + wantIsError: errors.InvalidParameter, + }, + { + name: "not-found", + args: args{ + key: func() *kms.AuditKey { + id, err := db.NewPublicId(kms.RootKeyPrefix) + require.NoError(t, err) + k := kms.AllocAuditKey() + k.PrivateId = id + require.NoError(t, err) + return &k + }(), + }, + wantRowsDeleted: 0, + wantErr: true, + wantIsError: errors.RecordNotFound, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + deletedRows, err := repo.DeleteAuditKey(context.Background(), tt.args.key.PrivateId, tt.args.opt...) + if tt.wantErr { + require.Error(err) + assert.Equal(0, deletedRows) + assert.True(errors.Match(errors.T(tt.wantIsError), err)) + // make sure there was no oplog written + err = db.TestVerifyOplog(t, rw, tt.args.key.PrivateId, db.WithOperation(oplog.OpType_OP_TYPE_DELETE), db.WithCreateNotBefore(10*time.Second)) + assert.Error(err) + assert.True(errors.IsNotFoundError(err)) + return + } + require.NoError(err) + assert.Equal(tt.wantRowsDeleted, deletedRows) + foundKey, err := repo.LookupAuditKey(context.Background(), tt.args.key.PrivateId) + assert.Error(err) + assert.Nil(foundKey) + assert.True(errors.IsNotFoundError(err)) + + // make sure there was no oplog written + err = db.TestVerifyOplog(t, rw, tt.args.key.PrivateId, db.WithOperation(oplog.OpType_OP_TYPE_DELETE), db.WithCreateNotBefore(10*time.Second)) + assert.Error(err) + assert.True(errors.IsNotFoundError(err)) + }) + } +} + +func TestRepository_ListAuditKeys(t *testing.T) { + t.Parallel() + conn, _ := db.TestSetup(t, "postgres") + const testLimit = 10 + rw := db.New(conn) + repo, err := kms.NewRepository(rw, rw, kms.WithLimit(testLimit)) + require.NoError(t, err) + wrapper := db.TestWrapper(t) + + type args struct { + opt []kms.Option + } + tests := []struct { + name string + createCnt int + args args + wantCnt int + wantErr bool + }{ + { + name: "no-limit", + createCnt: repo.DefaultLimit() + 1, + args: args{ + opt: []kms.Option{kms.WithLimit(-1)}, + }, + wantCnt: repo.DefaultLimit() + 1, // org and project both have keys, plus global scope + wantErr: false, + }, + { + name: "default-limit", + createCnt: repo.DefaultLimit() + 1, + args: args{}, + wantCnt: repo.DefaultLimit(), + wantErr: false, + }, + { + name: "custom-limit", + createCnt: repo.DefaultLimit() + 1, + args: args{ + opt: []kms.Option{kms.WithLimit(3)}, + }, + wantCnt: 3, + wantErr: false, + }, + } + for _, tt := range tests { + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + for i := 0; i < tt.createCnt; i++ { + org, proj := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(conn.Where("scope_id in(?)", []interface{}{"global", org.PublicId, proj.PublicId}).Delete(kms.AllocRootKey()).Error) + rk := kms.TestRootKey(t, conn, proj.PublicId) + kms.TestAuditKey(t, conn, rk.PrivateId) + require.NoError(err) + } + got, err := repo.ListAuditKeys(context.Background(), tt.args.opt...) + if tt.wantErr { + require.Error(err) + return + } + require.NoError(err) + assert.Equal(tt.wantCnt, len(got)) + }) + } +} diff --git a/internal/kms/repository_audit_key_version.go b/internal/kms/repository_audit_key_version.go new file mode 100644 index 000000000..e0f6f5157 --- /dev/null +++ b/internal/kms/repository_audit_key_version.go @@ -0,0 +1,173 @@ +package kms + +import ( + "context" + "fmt" + "strings" + + "github.com/hashicorp/boundary/internal/db" + "github.com/hashicorp/boundary/internal/errors" + wrapping "github.com/hashicorp/go-kms-wrapping" +) + +// CreateAuditKeyVersion inserts into the repository and returns the new key +// version with its PrivateId. There are no valid options at this time. +func (r *Repository) CreateAuditKeyVersion(ctx context.Context, rkvWrapper wrapping.Wrapper, auditKeyId string, key []byte, _ ...Option) (*AuditKeyVersion, error) { + const op = "kms.(Repository).CreateAuditKeyVersion" + if rkvWrapper == nil { + return nil, errors.New(ctx, errors.InvalidParameter, op, "missing root key version wrapper") + } + rootKeyVersionId := rkvWrapper.KeyID() + switch { + case !strings.HasPrefix(rootKeyVersionId, RootKeyVersionPrefix): + return nil, errors.New(ctx, errors.InvalidParameter, op, fmt.Sprintf("root key version id %s doesn't start with prefix %s", rootKeyVersionId, RootKeyVersionPrefix)) + case rootKeyVersionId == "": + return nil, errors.New(ctx, errors.InvalidParameter, op, "missing root key version id") + } + if auditKeyId == "" { + return nil, errors.New(ctx, errors.InvalidParameter, op, "missing audit key id") + } + if len(key) == 0 { + return nil, errors.New(ctx, errors.InvalidParameter, op, "missing key") + } + kv := AllocAuditKeyVersion() + id, err := newAuditKeyVersionId(ctx) + if err != nil { + return nil, errors.Wrap(ctx, err, op) + } + kv.PrivateId = id + kv.RootKeyVersionId = rootKeyVersionId + kv.Key = key + kv.AuditKeyId = auditKeyId + if err := kv.Encrypt(ctx, rkvWrapper); err != nil { + return nil, errors.Wrap(ctx, err, op) + } + + var returnedKey interface{} + _, err = r.writer.DoTx( + ctx, + db.StdRetryCnt, + db.ExpBackoff{}, + func(_ db.Reader, w db.Writer) error { + returnedKey = kv.Clone() + // no oplog entries for root key version + if err := w.Create(ctx, returnedKey); err != nil { + return errors.Wrap(ctx, err, op) + } + return nil + }, + ) + if err != nil { + return nil, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("failed for %s audit key id", kv.AuditKeyId))) + } + return returnedKey.(*AuditKeyVersion), nil +} + +// LookupAuditKeyVersion will look up a key version in the repository. If +// the key version is not found, it will return nil, nil. +func (r *Repository) LookupAuditKeyVersion(ctx context.Context, keyWrapper wrapping.Wrapper, privateId string, _ ...Option) (*AuditKeyVersion, error) { + const op = "kms.(Repository).LookupAuditKeyVersion" + if privateId == "" { + return nil, errors.New(ctx, errors.InvalidParameter, op, "missing private id") + } + if keyWrapper == nil { + return nil, errors.New(ctx, errors.InvalidParameter, op, "missing key wrapper") + } + k := AllocAuditKeyVersion() + k.PrivateId = privateId + if err := r.reader.LookupById(ctx, &k); err != nil { + return nil, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("failed for %s", privateId))) + } + if err := k.Decrypt(ctx, keyWrapper); err != nil { + return nil, errors.Wrap(ctx, err, op) + } + return &k, nil +} + +// DeleteAuditKeyVersion deletes the key version for the provided id from the +// repository returning a count of the number of records deleted. All options +// are ignored. +func (r *Repository) DeleteAuditKeyVersion(ctx context.Context, privateId string, _ ...Option) (int, error) { + const op = "kms.(Repository).DeleteAuditKeyVersion" + if privateId == "" { + return db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "missing private id") + } + k := AllocAuditKeyVersion() + k.PrivateId = privateId + if err := r.reader.LookupById(ctx, &k); err != nil { + return db.NoRowsAffected, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("failed for %s", privateId))) + } + + var rowsDeleted int + _, err := r.writer.DoTx( + ctx, + db.StdRetryCnt, + db.ExpBackoff{}, + func(_ db.Reader, w db.Writer) (err error) { + dk := k.Clone() + // no oplog entries for the key version + rowsDeleted, err = w.Delete(ctx, dk) + if err != nil { + return errors.Wrap(ctx, err, op) + } + if rowsDeleted > 1 { + return errors.New(ctx, errors.MultipleRecords, op, "more than 1 resource would have been deleted") + } + return nil + }, + ) + if err != nil { + return db.NoRowsAffected, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("failed for %s", privateId))) + } + return rowsDeleted, nil +} + +// LatestAuditKeyVersion searches for the key version with the highest +// version number. When no results are found, it returns nil with an +// errors.RecordNotFound error. +func (r *Repository) LatestAuditKeyVersion(ctx context.Context, rkvWrapper wrapping.Wrapper, AuditKeyId string, _ ...Option) (*AuditKeyVersion, error) { + const op = "kms.(Repository).LatestAuditKeyVersion" + if AuditKeyId == "" { + return nil, errors.New(ctx, errors.InvalidParameter, op, "missing audit key id") + } + if rkvWrapper == nil { + return nil, errors.New(ctx, errors.InvalidParameter, op, "missing root key version wrapper") + } + var foundKeys []*AuditKeyVersion + if err := r.reader.SearchWhere(ctx, &foundKeys, "audit_key_id = ?", []interface{}{AuditKeyId}, db.WithLimit(1), db.WithOrder("version desc")); err != nil { + return nil, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("failed for %s", AuditKeyId))) + } + if len(foundKeys) == 0 { + return nil, errors.E(ctx, errors.WithCode(errors.RecordNotFound), errors.WithOp(op)) + } + if err := foundKeys[0].Decrypt(ctx, rkvWrapper); err != nil { + return nil, errors.Wrap(ctx, err, op) + } + return foundKeys[0], nil +} + +// ListAuditKeyVersions will lists versions of a key. Supports the WithLimit option. +func (r *Repository) ListAuditKeyVersions(ctx context.Context, rkvWrapper wrapping.Wrapper, AuditKeyId string, opt ...Option) ([]DekVersion, error) { + const op = "kms.(Repository).ListAuditKeyVersions" + if AuditKeyId == "" { + return nil, errors.New(ctx, errors.InvalidParameter, op, "missing audit key id") + } + if rkvWrapper == nil { + return nil, errors.New(ctx, errors.InvalidParameter, op, "missing root key version wrapper") + } + var versions []*AuditKeyVersion + err := r.list(ctx, &versions, "audit_key_id = ?", []interface{}{AuditKeyId}, opt...) + if err != nil { + return nil, errors.Wrap(ctx, err, op) + } + for i, k := range versions { + if err := k.Decrypt(ctx, rkvWrapper); err != nil { + return nil, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("error decrypting key num %d", i))) + } + } + dekVersions := make([]DekVersion, 0, len(versions)) + for _, version := range versions { + dekVersions = append(dekVersions, version) + } + return dekVersions, nil +} diff --git a/internal/kms/repository_audit_key_version_test.go b/internal/kms/repository_audit_key_version_test.go new file mode 100644 index 000000000..843c686d2 --- /dev/null +++ b/internal/kms/repository_audit_key_version_test.go @@ -0,0 +1,367 @@ +package kms_test + +import ( + "context" + "testing" + "time" + + "github.com/hashicorp/boundary/internal/db" + "github.com/hashicorp/boundary/internal/errors" + "github.com/hashicorp/boundary/internal/iam" + "github.com/hashicorp/boundary/internal/kms" + "github.com/hashicorp/boundary/internal/oplog" + wrapping "github.com/hashicorp/go-kms-wrapping" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "google.golang.org/protobuf/proto" +) + +func TestRepository_CreateAuditKeyVersion(t *testing.T) { + t.Parallel() + conn, _ := db.TestSetup(t, "postgres") + rw := db.New(conn) + wrapper := db.TestWrapper(t) + repo, err := kms.NewRepository(rw, rw) + require.NoError(t, err) + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + rk := kms.TestRootKey(t, conn, org.PublicId) + _, rkvWrapper := kms.TestRootKeyVersion(t, conn, wrapper, rk.PrivateId) + dk := kms.TestAuditKey(t, conn, rk.PrivateId) + + type args struct { + key []byte + AuditKeyId string + keyWrapper wrapping.Wrapper + opt []kms.Option + } + tests := []struct { + name string + args args + wantErr bool + wantIsError errors.Code + }{ + { + name: "valid", + args: args{ + key: []byte("test key"), + keyWrapper: rkvWrapper, + AuditKeyId: dk.PrivateId, + }, + wantErr: false, + }, + { + name: "invalid-rkv-wrapper", + args: args{ + key: []byte("test key"), + keyWrapper: wrapper, + AuditKeyId: dk.PrivateId, + }, + wantErr: true, + }, + { + name: "empty-key", + args: args{ + key: nil, + keyWrapper: wrapper, + AuditKeyId: dk.PrivateId, + }, + wantErr: true, + wantIsError: errors.InvalidParameter, + }, + { + name: "nil-wrapper", + args: args{ + key: []byte("test key"), + keyWrapper: nil, + }, + wantErr: true, + wantIsError: errors.InvalidParameter, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + k, err := repo.CreateAuditKeyVersion(context.Background(), tt.args.keyWrapper, tt.args.AuditKeyId, tt.args.key, tt.args.opt...) + if tt.wantErr { + assert.Error(err) + assert.Nil(k) + assert.True(errors.Match(errors.T(tt.wantIsError), err)) + return + } + require.NoError(err) + assert.NotNil(k.CreateTime) + foundKey, err := repo.LookupAuditKeyVersion(context.Background(), tt.args.keyWrapper, k.PrivateId) + assert.NoError(err) + assert.True(proto.Equal(foundKey, k)) + + // make sure there was no oplog written + err = db.TestVerifyOplog(t, rw, k.PrivateId, db.WithOperation(oplog.OpType_OP_TYPE_CREATE), db.WithCreateNotBefore(10*time.Second)) + assert.Error(err) + assert.True(errors.IsNotFoundError(err)) + }) + } +} + +func TestRepository_DeleteAuditKeyVersion(t *testing.T) { + t.Parallel() + conn, _ := db.TestSetup(t, "postgres") + rw := db.New(conn) + wrapper := db.TestWrapper(t) + repo, err := kms.NewRepository(rw, rw) + require.NoError(t, err) + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + rk := kms.TestRootKey(t, conn, org.PublicId) + _, rkvWrapper := kms.TestRootKeyVersion(t, conn, wrapper, rk.PrivateId) + dk := kms.TestAuditKey(t, conn, rk.PrivateId) + + type args struct { + key *kms.AuditKeyVersion + opt []kms.Option + } + tests := []struct { + name string + args args + wantRowsDeleted int + wantErr bool + wantIsError errors.Code + }{ + { + name: "valid", + args: args{ + key: kms.TestAuditKeyVersion(t, conn, rkvWrapper, dk.PrivateId, []byte("audit key")), + }, + wantRowsDeleted: 1, + wantErr: false, + }, + { + name: "no-private-id", + args: args{ + key: func() *kms.AuditKeyVersion { + k := kms.AllocAuditKeyVersion() + return &k + }(), + }, + wantRowsDeleted: 0, + wantErr: true, + wantIsError: errors.InvalidParameter, + }, + { + name: "not-found", + args: args{ + key: func() *kms.AuditKeyVersion { + id, err := db.NewPublicId(kms.AuditKeyPrefix) + require.NoError(t, err) + k := kms.AllocAuditKeyVersion() + k.PrivateId = id + require.NoError(t, err) + return &k + }(), + }, + wantRowsDeleted: 0, + wantErr: true, + wantIsError: errors.RecordNotFound, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + deletedRows, err := repo.DeleteAuditKeyVersion(context.Background(), tt.args.key.PrivateId, tt.args.opt...) + if tt.wantErr { + require.Error(err) + assert.Equal(0, deletedRows) + assert.True(errors.Match(errors.T(tt.wantIsError), err)) + err = db.TestVerifyOplog(t, rw, tt.args.key.PrivateId, db.WithOperation(oplog.OpType_OP_TYPE_DELETE), db.WithCreateNotBefore(10*time.Second)) + assert.Error(err) + assert.True(errors.IsNotFoundError(err)) + return + } + require.NoError(err) + assert.Equal(tt.wantRowsDeleted, deletedRows) + foundKey, err := repo.LookupAuditKeyVersion(context.Background(), wrapper, tt.args.key.PrivateId) + assert.Error(err) + assert.Nil(foundKey) + assert.True(errors.IsNotFoundError(err)) + + // make sure there was no oplog written + err = db.TestVerifyOplog(t, rw, tt.args.key.PrivateId, db.WithOperation(oplog.OpType_OP_TYPE_DELETE), db.WithCreateNotBefore(10*time.Second)) + assert.Error(err) + assert.True(errors.IsNotFoundError(err)) + }) + } +} + +func TestRepository_LatestAuditKeyVersion(t *testing.T) { + t.Parallel() + conn, _ := db.TestSetup(t, "postgres") + rw := db.New(conn) + wrapper := db.TestWrapper(t) + repo, err := kms.NewRepository(rw, rw) + require.NoError(t, err) + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + rk := kms.TestRootKey(t, conn, org.PublicId) + _, rkvWrapper := kms.TestRootKeyVersion(t, conn, wrapper, rk.PrivateId) + dk := kms.TestAuditKey(t, conn, rk.PrivateId) + + tests := []struct { + name string + createCnt int + keyWrapper wrapping.Wrapper + wantVersion uint32 + wantErr bool + wantIsError errors.Code + }{ + { + name: "5", + createCnt: 5, + keyWrapper: rkvWrapper, + wantVersion: 5, + wantErr: false, + }, + { + name: "1", + createCnt: 1, + keyWrapper: rkvWrapper, + wantVersion: 1, + wantErr: false, + }, + { + name: "0", + createCnt: 0, + keyWrapper: rkvWrapper, + wantErr: true, + wantIsError: errors.RecordNotFound, + }, + { + name: "nil-wrapper", + createCnt: 5, + keyWrapper: nil, + wantErr: true, + wantIsError: errors.InvalidParameter, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + require.NoError(conn.Where("1=1").Delete(kms.AllocAuditKeyVersion()).Error) + testKeys := []*kms.AuditKeyVersion{} + for i := 0; i < tt.createCnt; i++ { + k := kms.TestAuditKeyVersion(t, conn, rkvWrapper, dk.PrivateId, []byte("test audit key")) + testKeys = append(testKeys, k) + } + assert.Equal(tt.createCnt, len(testKeys)) + got, err := repo.LatestAuditKeyVersion(context.Background(), tt.keyWrapper, dk.PrivateId) + if tt.wantErr { + require.Error(err) + assert.Nil(got) + assert.True(errors.Match(errors.T(tt.wantIsError), err)) + return + } + require.NoError(err) + require.NotNil(got) + assert.Equal(tt.wantVersion, got.Version) + }) + } +} + +func TestRepository_ListAuditKeyVersions(t *testing.T) { + t.Parallel() + conn, _ := db.TestSetup(t, "postgres") + const testLimit = 10 + rw := db.New(conn) + wrapper := db.TestWrapper(t) + repo, err := kms.NewRepository(rw, rw, kms.WithLimit(testLimit)) + require.NoError(t, err) + org, _ := iam.TestScopes(t, iam.TestRepo(t, conn, wrapper)) + require.NoError(t, conn.Where("1=1").Delete(kms.AllocRootKey()).Error) + rk := kms.TestRootKey(t, conn, org.PublicId) + _, rkvWrapper := kms.TestRootKeyVersion(t, conn, wrapper, rk.PrivateId) + dk := kms.TestAuditKey(t, conn, rk.PrivateId) + + type args struct { + AuditKeyId string + keyWrapper wrapping.Wrapper + opt []kms.Option + } + tests := []struct { + name string + createCnt int + args args + wantCnt int + wantErr bool + }{ + { + name: "no-limit", + createCnt: repo.DefaultLimit() + 1, + args: args{ + AuditKeyId: dk.PrivateId, + keyWrapper: rkvWrapper, + opt: []kms.Option{kms.WithLimit(-1)}, + }, + wantCnt: repo.DefaultLimit() + 1, + wantErr: false, + }, + { + name: "default-limit", + createCnt: repo.DefaultLimit() + 1, + args: args{ + keyWrapper: rkvWrapper, + AuditKeyId: dk.PrivateId, + }, + wantCnt: repo.DefaultLimit(), + wantErr: false, + }, + { + name: "custom-limit", + createCnt: repo.DefaultLimit() + 1, + args: args{ + keyWrapper: rkvWrapper, + AuditKeyId: dk.PrivateId, + opt: []kms.Option{kms.WithLimit(3)}, + }, + wantCnt: 3, + wantErr: false, + }, + { + name: "bad-org", + createCnt: 1, + args: args{ + keyWrapper: rkvWrapper, + AuditKeyId: "bad-id", + }, + wantCnt: 0, + wantErr: false, + }, + { + name: "nil-wrapper", + createCnt: 1, + args: args{ + keyWrapper: nil, + AuditKeyId: dk.PrivateId, + }, + wantCnt: 0, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + require.NoError(conn.Where("1=1").Delete(kms.AllocAuditKeyVersion()).Error) + keyVersions := []*kms.AuditKeyVersion{} + for i := 0; i < tt.createCnt; i++ { + k := kms.TestAuditKeyVersion(t, conn, rkvWrapper, dk.PrivateId, []byte("audit key")) + keyVersions = append(keyVersions, k) + } + assert.Equal(tt.createCnt, len(keyVersions)) + got, err := repo.ListAuditKeyVersions(context.Background(), tt.args.keyWrapper, tt.args.AuditKeyId, tt.args.opt...) + if tt.wantErr { + require.Error(err) + return + } + require.NoError(err) + assert.Equal(tt.wantCnt, len(got)) + }) + } +} diff --git a/internal/kms/repository_test.go b/internal/kms/repository_test.go index 553382de7..31090ca3e 100644 --- a/internal/kms/repository_test.go +++ b/internal/kms/repository_test.go @@ -10,6 +10,7 @@ import ( "github.com/hashicorp/boundary/internal/errors" "github.com/hashicorp/boundary/internal/iam" "github.com/hashicorp/boundary/internal/kms" + "github.com/hashicorp/boundary/internal/types/scope" wrapping "github.com/hashicorp/go-kms-wrapping" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -111,6 +112,16 @@ func TestCreateKeysTx(t *testing.T) { scopeId: org.PublicId, }, }, + { + name: "valid-at-global", + args: args{ + dbReader: rw, + dbWriter: rw, + rootWrapper: wrapper, + randomReader: rand.Reader, + scopeId: scope.Global.String(), + }, + }, { name: "nil-reader", args: args{ @@ -257,6 +268,21 @@ func TestCreateKeysTx(t *testing.T) { require.NoError(err) assert.Equal(oidcK.PrivateId, oidcKv.OidcKeyId) assert.Equal(rkv.PrivateId, oidcKv.RootKeyVersionId) + + if tt.args.scopeId == scope.Global.String() { + auditK := kms.AllocAuditKey() + auditK.PrivateId = keys[kms.KeyTypeAuditKey].GetPrivateId() + err = rw.LookupById(context.Background(), &auditK) + require.NoError(err) + assert.Equal(rk.PrivateId, auditK.RootKeyId) + + auditKv := kms.AllocAuditKeyVersion() + auditKv.PrivateId = keys[kms.KeyTypeAuditKeyVersion].GetPrivateId() + err = rw.LookupById(context.Background(), &auditKv) + require.NoError(err) + assert.Equal(auditK.PrivateId, auditKv.AuditKeyId) + assert.Equal(rkv.PrivateId, auditKv.RootKeyVersionId) + } }) } } diff --git a/internal/kms/store/audit_key.pb.go b/internal/kms/store/audit_key.pb.go new file mode 100644 index 000000000..ee4e39c85 --- /dev/null +++ b/internal/kms/store/audit_key.pb.go @@ -0,0 +1,326 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.17.3 +// source: controller/storage/kms/store/v1/audit_key.proto + +package store + +import ( + timestamp "github.com/hashicorp/boundary/internal/db/timestamp" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type AuditKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // private_id is used to access the key via an API + // @inject_tag: gorm:"primary_key" + PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` + // root key id for the key + // @inject_tag: `gorm:"default:null"` + RootKeyId string `protobuf:"bytes,20,opt,name=root_key_id,json=rootKeyId,proto3" json:"root_key_id,omitempty" gorm:"default:null"` + // create_time from the RDBMS + // @inject_tag: `gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,30,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` +} + +func (x *AuditKey) Reset() { + *x = AuditKey{} + if protoimpl.UnsafeEnabled { + mi := &file_controller_storage_kms_store_v1_audit_key_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AuditKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AuditKey) ProtoMessage() {} + +func (x *AuditKey) ProtoReflect() protoreflect.Message { + mi := &file_controller_storage_kms_store_v1_audit_key_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AuditKey.ProtoReflect.Descriptor instead. +func (*AuditKey) Descriptor() ([]byte, []int) { + return file_controller_storage_kms_store_v1_audit_key_proto_rawDescGZIP(), []int{0} +} + +func (x *AuditKey) GetPrivateId() string { + if x != nil { + return x.PrivateId + } + return "" +} + +func (x *AuditKey) GetRootKeyId() string { + if x != nil { + return x.RootKeyId + } + return "" +} + +func (x *AuditKey) GetCreateTime() *timestamp.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +type AuditKeyVersion struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // private_id is used to access the key version via an API + // @inject_tag: gorm:"primary_key" + PrivateId string `protobuf:"bytes,10,opt,name=private_id,json=privateId,proto3" json:"private_id,omitempty" gorm:"primary_key"` + // id for the key version + // @inject_tag: `gorm:"default:null"` + AuditKeyId string `protobuf:"bytes,20,opt,name=audit_key_id,json=auditKeyId,proto3" json:"audit_key_id,omitempty" gorm:"default:null"` + // root_key_version_id of the version of the root key data. + // @inject_tag: `gorm:"default:null"` + RootKeyVersionId string `protobuf:"bytes,30,opt,name=root_key_version_id,json=rootKeyVersionId,proto3" json:"root_key_version_id,omitempty" gorm:"default:null"` + // plain-text of the key data. we are NOT storing this plain-text key + // in the db. + // @inject_tag: `gorm:"-" wrapping:"pt,key_data"` + Key []byte `protobuf:"bytes,40,opt,name=key,proto3" json:"key,omitempty" gorm:"-" wrapping:"pt,key_data"` + // ciphertext key data stored in the database + // @inject_tag: `gorm:"column:key;not_null" wrapping:"ct,key_data"` + CtKey []byte `protobuf:"bytes,50,opt,name=ct_key,json=ctKey,proto3" json:"ct_key,omitempty" gorm:"column:key;not_null" wrapping:"ct,key_data"` + // version of the key data. This is not used for optimistic locking, since + // key versions are immutable. It's just the version of the key. + // @inject_tag: `gorm:"default:null"` + Version uint32 `protobuf:"varint,60,opt,name=version,proto3" json:"version,omitempty" gorm:"default:null"` + // create_time from the RDBMS + // @inject_tag: `gorm:"default:current_timestamp"` + CreateTime *timestamp.Timestamp `protobuf:"bytes,70,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty" gorm:"default:current_timestamp"` +} + +func (x *AuditKeyVersion) Reset() { + *x = AuditKeyVersion{} + if protoimpl.UnsafeEnabled { + mi := &file_controller_storage_kms_store_v1_audit_key_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AuditKeyVersion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AuditKeyVersion) ProtoMessage() {} + +func (x *AuditKeyVersion) ProtoReflect() protoreflect.Message { + mi := &file_controller_storage_kms_store_v1_audit_key_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AuditKeyVersion.ProtoReflect.Descriptor instead. +func (*AuditKeyVersion) Descriptor() ([]byte, []int) { + return file_controller_storage_kms_store_v1_audit_key_proto_rawDescGZIP(), []int{1} +} + +func (x *AuditKeyVersion) GetPrivateId() string { + if x != nil { + return x.PrivateId + } + return "" +} + +func (x *AuditKeyVersion) GetAuditKeyId() string { + if x != nil { + return x.AuditKeyId + } + return "" +} + +func (x *AuditKeyVersion) GetRootKeyVersionId() string { + if x != nil { + return x.RootKeyVersionId + } + return "" +} + +func (x *AuditKeyVersion) GetKey() []byte { + if x != nil { + return x.Key + } + return nil +} + +func (x *AuditKeyVersion) GetCtKey() []byte { + if x != nil { + return x.CtKey + } + return nil +} + +func (x *AuditKeyVersion) GetVersion() uint32 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *AuditKeyVersion) GetCreateTime() *timestamp.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +var File_controller_storage_kms_store_v1_audit_key_proto protoreflect.FileDescriptor + +var file_controller_storage_kms_store_v1_audit_key_proto_rawDesc = []byte{ + 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2f, 0x6b, 0x6d, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x76, + 0x31, 0x2f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x1f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x6b, 0x6d, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x76, 0x31, 0x1a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x96, 0x01, 0x0a, 0x08, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4b, 0x65, 0x79, + 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, + 0x1e, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, + 0x4b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1e, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, + 0x72, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x91, 0x02, 0x0a, + 0x0f, 0x41, 0x75, 0x64, 0x69, 0x74, 0x4b, 0x65, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, + 0x20, 0x0a, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x75, 0x64, 0x69, 0x74, 0x4b, 0x65, 0x79, 0x49, + 0x64, 0x12, 0x2d, 0x0a, 0x13, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x72, 0x6f, 0x6f, 0x74, 0x4b, 0x65, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x15, 0x0a, 0x06, 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x32, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x05, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x42, 0x38, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, + 0x61, 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, + 0x79, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6b, 0x6d, 0x73, 0x2f, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x3b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_controller_storage_kms_store_v1_audit_key_proto_rawDescOnce sync.Once + file_controller_storage_kms_store_v1_audit_key_proto_rawDescData = file_controller_storage_kms_store_v1_audit_key_proto_rawDesc +) + +func file_controller_storage_kms_store_v1_audit_key_proto_rawDescGZIP() []byte { + file_controller_storage_kms_store_v1_audit_key_proto_rawDescOnce.Do(func() { + file_controller_storage_kms_store_v1_audit_key_proto_rawDescData = protoimpl.X.CompressGZIP(file_controller_storage_kms_store_v1_audit_key_proto_rawDescData) + }) + return file_controller_storage_kms_store_v1_audit_key_proto_rawDescData +} + +var file_controller_storage_kms_store_v1_audit_key_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_controller_storage_kms_store_v1_audit_key_proto_goTypes = []interface{}{ + (*AuditKey)(nil), // 0: controller.storage.kms.store.v1.AuditKey + (*AuditKeyVersion)(nil), // 1: controller.storage.kms.store.v1.AuditKeyVersion + (*timestamp.Timestamp)(nil), // 2: controller.storage.timestamp.v1.Timestamp +} +var file_controller_storage_kms_store_v1_audit_key_proto_depIdxs = []int32{ + 2, // 0: controller.storage.kms.store.v1.AuditKey.create_time:type_name -> controller.storage.timestamp.v1.Timestamp + 2, // 1: controller.storage.kms.store.v1.AuditKeyVersion.create_time:type_name -> controller.storage.timestamp.v1.Timestamp + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_controller_storage_kms_store_v1_audit_key_proto_init() } +func file_controller_storage_kms_store_v1_audit_key_proto_init() { + if File_controller_storage_kms_store_v1_audit_key_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_controller_storage_kms_store_v1_audit_key_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AuditKey); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_controller_storage_kms_store_v1_audit_key_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AuditKeyVersion); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_controller_storage_kms_store_v1_audit_key_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_controller_storage_kms_store_v1_audit_key_proto_goTypes, + DependencyIndexes: file_controller_storage_kms_store_v1_audit_key_proto_depIdxs, + MessageInfos: file_controller_storage_kms_store_v1_audit_key_proto_msgTypes, + }.Build() + File_controller_storage_kms_store_v1_audit_key_proto = out.File + file_controller_storage_kms_store_v1_audit_key_proto_rawDesc = nil + file_controller_storage_kms_store_v1_audit_key_proto_goTypes = nil + file_controller_storage_kms_store_v1_audit_key_proto_depIdxs = nil +} diff --git a/internal/kms/testing.go b/internal/kms/testing.go index 2eae274e2..8f668a7b8 100644 --- a/internal/kms/testing.go +++ b/internal/kms/testing.go @@ -229,3 +229,39 @@ func TestOidcKeyVersion(t *testing.T, conn *db.DB, rootKeyVersionWrapper wrappin require.NoError(err) return k } + +func TestAuditKey(t *testing.T, conn *db.DB, rootKeyId string) *AuditKey { + t.Helper() + ctx := context.Background() + require := require.New(t) + rw := db.New(conn) + require.NoError(conn.Where("root_key_id = ?", rootKeyId).Delete(AllocAuditKey()).Error) + k, err := NewAuditKey(ctx, rootKeyId) + require.NoError(err) + id, err := newAuditKeyId(ctx) + require.NoError(err) + k.PrivateId = id + k.RootKeyId = rootKeyId + err = rw.Create(context.Background(), k) + require.NoError(err) + return k +} + +func TestAuditKeyVersion(t *testing.T, conn *db.DB, rootKeyVersionWrapper wrapping.Wrapper, auditKeyId string, key []byte) *AuditKeyVersion { + t.Helper() + ctx := context.Background() + require := require.New(t) + rw := db.New(conn) + rootKeyVersionId := rootKeyVersionWrapper.KeyID() + require.NotEmpty(rootKeyVersionId) + k, err := NewAuditKeyVersion(ctx, auditKeyId, key, rootKeyVersionId) + require.NoError(err) + id, err := newAuditKeyVersionId(ctx) + require.NoError(err) + k.PrivateId = id + err = k.Encrypt(context.Background(), rootKeyVersionWrapper) + require.NoError(err) + err = rw.Create(context.Background(), k) + require.NoError(err) + return k +} diff --git a/internal/libs/crypto/error.go b/internal/libs/crypto/error.go index 6e97908cc..c59844260 100644 --- a/internal/libs/crypto/error.go +++ b/internal/libs/crypto/error.go @@ -4,6 +4,4 @@ import ( "errors" ) -var ( - ErrInvalidParameter = errors.New("Invalid parameter") -) +var ErrInvalidParameter = errors.New("Invalid parameter") diff --git a/internal/observability/event/cloudevents_formatter_node.go b/internal/observability/event/cloudevents_formatter_node.go index c56227624..6bcd56e51 100644 --- a/internal/observability/event/cloudevents_formatter_node.go +++ b/internal/observability/event/cloudevents_formatter_node.go @@ -4,11 +4,13 @@ import ( "context" "fmt" "net/url" + "sync" filterpkg "github.com/hashicorp/boundary/internal/filter" "github.com/hashicorp/eventlogger" "github.com/hashicorp/eventlogger/formatter_filters/cloudevents" "github.com/hashicorp/go-bexpr" + wrapping "github.com/hashicorp/go-kms-wrapping" ) // cloudEventsFormatterFilter represents an eventlogger.cloudEventsFormatterFilter which filters events based on allow and @@ -17,6 +19,7 @@ type cloudEventsFormatterFilter struct { *cloudevents.FormatterFilter allow []*filter deny []*filter + l sync.RWMutex } // newCloudEventsFormatterFilter creates a new filter node using the optional allow and deny filters @@ -67,6 +70,23 @@ func newCloudEventsFormatterFilter(source *url.URL, format cloudevents.Format, o return &n, nil } +// Rotate supports rotating the filter's wrapper. No options are currently +// supported. +func (f *cloudEventsFormatterFilter) Rotate(w wrapping.Wrapper, _ ...Option) error { + const op = "event.(cloudEventsFormatterFilter).Rotate" + if w == nil { + return fmt.Errorf("%s: missing wrapper: %w", op, ErrInvalidParameter) + } + f.l.Lock() + defer f.l.Unlock() + h, err := newSigner(context.Background(), w, nil, nil) + if err != nil { + return err + } + f.Signer = cloudevents.Signer(h) + return nil +} + func newPredicate(allow, deny []*filter) func(ctx context.Context, ce interface{}) (bool, error) { return func(ctx context.Context, ce interface{}) (bool, error) { if len(allow) == 0 && len(deny) == 0 { diff --git a/internal/observability/event/cloudevents_formatter_node_test.go b/internal/observability/event/cloudevents_formatter_node_test.go index fa1090098..75dd9a714 100644 --- a/internal/observability/event/cloudevents_formatter_node_test.go +++ b/internal/observability/event/cloudevents_formatter_node_test.go @@ -10,6 +10,7 @@ import ( "github.com/hashicorp/eventlogger" "github.com/hashicorp/eventlogger/formatter_filters/cloudevents" + wrapping "github.com/hashicorp/go-kms-wrapping" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -343,3 +344,41 @@ func TestNode_Process(t *testing.T) { }) } } + +func Test_cloudEventsFormatter_Rotate(t *testing.T) { + tests := []struct { + name string + f *cloudEventsFormatterFilter + w wrapping.Wrapper + wantIsError error + wantErrContains string + }{ + { + name: "missing-wrapper", + f: &cloudEventsFormatterFilter{FormatterFilter: &cloudevents.FormatterFilter{}}, + wantIsError: ErrInvalidParameter, + wantErrContains: "missing wrapper", + }, + { + name: "valid", + f: &cloudEventsFormatterFilter{FormatterFilter: &cloudevents.FormatterFilter{}}, + w: testWrapper(t), + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + err := tt.f.Rotate(tt.w) + if tt.wantIsError != nil { + require.Error(err) + assert.ErrorIs(err, tt.wantIsError) + if tt.wantErrContains != "" { + assert.Contains(err.Error(), tt.wantErrContains) + } + return + } + assert.NotNil(tt.f.Signer) + }) + } +} diff --git a/internal/observability/event/eventer.go b/internal/observability/event/eventer.go index 4bf82eab4..bddc53f91 100644 --- a/internal/observability/event/eventer.go +++ b/internal/observability/event/eventer.go @@ -21,6 +21,7 @@ import ( "github.com/hashicorp/eventlogger/formatter_filters/cloudevents" "github.com/hashicorp/eventlogger/sinks/writer" "github.com/hashicorp/go-hclog" + wrapping "github.com/hashicorp/go-kms-wrapping" "google.golang.org/protobuf/types/known/fieldmaskpb" ) @@ -67,6 +68,7 @@ type Eventer struct { auditPipelines []pipeline observationPipelines []pipeline errPipelines []pipeline + auditWrapperNodes []interface{} } type pipeline struct { @@ -187,9 +189,10 @@ func NewEventer(log hclog.Logger, serializationLock *sync.Mutex, serverName stri } e := &Eventer{ - logger: log, - conf: c, - broker: b, + logger: log, + conf: c, + broker: b, + auditWrapperNodes: []interface{}{}, } if !opts.withNow.IsZero() { @@ -208,7 +211,8 @@ func NewEventer(log hclog.Logger, serializationLock *sync.Mutex, serverName stri allSinkFilenames := map[string]bool{} for _, s := range c.Sinks { - fmtId, fmtNode, err := newFmtFilterNode(serverName, *s) + fmtId, fmtNode, err := newFmtFilterNode(serverName, *s, opt...) + e.auditWrapperNodes = append(e.auditWrapperNodes, fmtNode) if err != nil { return nil, fmt.Errorf("%s: %w", op, err) } @@ -287,6 +291,7 @@ func NewEventer(log hclog.Logger, serializationLock *sync.Mutex, serverName stri if err != nil { return nil, fmt.Errorf("%s: %w", op, err) } + e.auditWrapperNodes = append(e.auditWrapperNodes, encryptFilter) if len(s.AuditConfig.FilterOverrides) > 0 { overrides := encrypt.DefaultFilterOperations() for k, v := range s.AuditConfig.FilterOverrides { @@ -464,11 +469,12 @@ func NewEventer(log hclog.Logger, serializationLock *sync.Mutex, serverName stri return e, nil } -func newFmtFilterNode(serverName string, c SinkConfig) (eventlogger.NodeID, eventlogger.Node, error) { +func newFmtFilterNode(serverName string, c SinkConfig, opt ...Option) (eventlogger.NodeID, eventlogger.Node, error) { const op = "newFmtFilterNode" if serverName == "" { return "", nil, fmt.Errorf("%s: missing server name: %w", op, ErrInvalidParameter) } + opts := getOpts(opt...) var fmtId eventlogger.NodeID var fmtNode eventlogger.Node switch c.Format { @@ -479,7 +485,7 @@ func newFmtFilterNode(serverName string, c SinkConfig) (eventlogger.NodeID, even } fmtId = eventlogger.NodeID(id) - fmtNode, err = newHclogFormatterFilter(c.Format == JSONHclogSinkFormat, WithAllow(c.AllowFilters...), WithDeny(c.DenyFilters...)) + fmtNode, err = newHclogFormatterFilter(c.Format == JSONHclogSinkFormat, WithAllow(c.AllowFilters...), WithDeny(c.DenyFilters...), WithAuditWrapper(opts.withAuditWrapper)) if err != nil { return "", nil, fmt.Errorf("%s: %w", op, err) } @@ -531,6 +537,26 @@ func DefaultSink() *SinkConfig { } } +func (e *Eventer) RotateAuditWrapper(ctx context.Context, newWrapper wrapping.Wrapper) error { + const op = "event.(Eventer).RotateAuditWrapper" + if newWrapper == nil { + return fmt.Errorf("%s: missing wrapper: %w", op, ErrInvalidParameter) + } + for _, n := range e.auditWrapperNodes { + switch w := n.(type) { + case *hclogFormatterFilter: + w.Rotate(newWrapper) + case *cloudEventsFormatterFilter: + w.Rotate(newWrapper) + case *encrypt.Filter: + w.Rotate(encrypt.WithWrapper(newWrapper)) + default: + return fmt.Errorf("%s: unsupported node type (%s): %w", op, reflect.TypeOf(w), ErrInvalidParameter) + } + } + return nil +} + // writeObservation writes/sends an Observation event. func (e *Eventer) writeObservation(ctx context.Context, event *observation) error { const op = "event.(Eventer).writeObservation" diff --git a/internal/observability/event/eventer_test.go b/internal/observability/event/eventer_test.go index 8b0151f2d..35353b51e 100644 --- a/internal/observability/event/eventer_test.go +++ b/internal/observability/event/eventer_test.go @@ -13,8 +13,10 @@ import ( "testing" "github.com/hashicorp/eventlogger" + "github.com/hashicorp/eventlogger/filters/encrypt" "github.com/hashicorp/eventlogger/formatter_filters/cloudevents" "github.com/hashicorp/go-hclog" + wrapping "github.com/hashicorp/go-kms-wrapping" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -149,6 +151,7 @@ func Test_InitSysEventer(t *testing.T) { tt.want.auditPipelines = got.auditPipelines tt.want.errPipelines = got.errPipelines tt.want.observationPipelines = got.observationPipelines + tt.want.auditWrapperNodes = got.auditWrapperNodes assert.Equal(tt.want, got) }) } @@ -716,6 +719,7 @@ func Test_NewEventer(t *testing.T) { tt.want.auditPipelines = got.auditPipelines tt.want.errPipelines = got.errPipelines tt.want.observationPipelines = got.observationPipelines + tt.want.auditWrapperNodes = got.auditWrapperNodes assert.Equal(tt.want, got) assert.Lenf(testBroker.registeredNodeIds, len(tt.wantRegistered), "got nodes: %q", testBroker.registeredNodeIds) @@ -1184,3 +1188,69 @@ func Test_logAdapter_Write(t *testing.T) { }) } } + +func TestEventer_RotateAuditWrapper(t *testing.T) { + // this test and its subtests cannot be run in parallel because of it's + // dependency on the sysEventer + + cloudEventsConfig := TestEventerConfig(t, "TestEventer_RotateAuditWrapper") + hclogConfig := TestEventerConfig(t, "TestEventer_RotateAuditWrapper", testWithSinkFormat(t, JSONHclogSinkFormat)) + + testLock := &sync.Mutex{} + testLogger := hclog.New(&hclog.LoggerOptions{ + Mutex: testLock, + Name: "test", + }) + + testCtx := context.Background() + tests := []struct { + name string + w wrapping.Wrapper + config TestConfig + wantIsError error + wantErrContains string + }{ + { + name: "missing-wrapper", + config: cloudEventsConfig, + wantIsError: ErrInvalidParameter, + wantErrContains: "missing wrapper", + }, + { + name: "valid-cloudevents", + w: testWrapper(t), + config: cloudEventsConfig, + }, + { + name: "valid-hclog", + w: testWrapper(t), + config: hclogConfig, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + require.NoError(InitSysEventer(testLogger, testLock, "TestEventer_RotateAuditWrapper", WithEventerConfig(&tt.config.EventerConfig))) + eventer := SysEventer() + err := eventer.RotateAuditWrapper(testCtx, tt.w) + if tt.wantIsError != nil { + require.Error(err) + assert.ErrorIs(err, tt.wantIsError) + if tt.wantErrContains != "" { + assert.Contains(err.Error(), tt.wantErrContains) + } + return + } + for _, n := range eventer.auditWrapperNodes { + switch w := n.(type) { + case *hclogFormatterFilter: + assert.NotNil(w.signer) + case *cloudEventsFormatterFilter: + assert.NotNil(w.Signer) + case *encrypt.Filter: + assert.NotNil(w.Wrapper) + } + } + }) + } +} diff --git a/internal/observability/event/hclog_formatter_node.go b/internal/observability/event/hclog_formatter_node.go index 69af2b2ac..8704f6128 100644 --- a/internal/observability/event/hclog_formatter_node.go +++ b/internal/observability/event/hclog_formatter_node.go @@ -3,13 +3,16 @@ package event import ( "bytes" "context" + "encoding/base64" "errors" "fmt" "reflect" + "sync" "github.com/fatih/structs" "github.com/hashicorp/eventlogger" "github.com/hashicorp/go-hclog" + wrapping "github.com/hashicorp/go-kms-wrapping" ) const ( @@ -28,14 +31,18 @@ type hclogFormatterFilter struct { predicate func(ctx context.Context, i interface{}) (bool, error) allow []*filter deny []*filter + signer signer + l sync.RWMutex } func newHclogFormatterFilter(jsonFormat bool, opt ...Option) (*hclogFormatterFilter, error) { const op = "event.NewHclogFormatter" + opts := getOpts(opt...) + var s signer n := hclogFormatterFilter{ jsonFormat: jsonFormat, + signer: s, } - opts := getOpts(opt...) // intentionally not checking if allow and/or deny optional filters were // supplied since having a filter node with no filters is okay. @@ -64,6 +71,23 @@ func newHclogFormatterFilter(jsonFormat bool, opt ...Option) (*hclogFormatterFil return &n, nil } +// Rotate supports rotating the filter's wrapper. No options are currently +// supported. +func (f *hclogFormatterFilter) Rotate(w wrapping.Wrapper, _ ...Option) error { + const op = "event.(hclogFormatterFilter).Rotate" + if w == nil { + return fmt.Errorf("%s: missing wrapper: %w", op, ErrInvalidParameter) + } + f.l.Lock() + defer f.l.Unlock() + h, err := newSigner(context.Background(), w, nil, nil) + if err != nil { + return err + } + f.signer = h + return nil +} + // Reopen is a no op func (_ *hclogFormatterFilter) Reopen() error { return nil } @@ -154,23 +178,20 @@ func (f *hclogFormatterFilter) Process(ctx context.Context, e *eventlogger.Event args = append(args, k, v) } - var buf bytes.Buffer - logger := hclog.New(&hclog.LoggerOptions{ - Output: &buf, - Level: hclog.Trace, - JSONFormat: f.jsonFormat, - }) - const eventMarker = " event" - switch string(e.Type) { - case string(ErrorType): - logger.Error(string(e.Type)+eventMarker, args...) - case string(ObservationType), string(SystemType), string(AuditType): - logger.Info(string(e.Type)+eventMarker, args...) - default: - // well, we should ever hit this, since we should be specific about the - // event type we're processing, but adding this default to just be sure - // we haven't missed anything. - logger.Trace(string(e.Type)+eventMarker, args...) + buf, err := hclogBytes(e.Type, f.jsonFormat, args) + if err != nil { + return nil, fmt.Errorf("%s: unable to format: %w", op, err) + } + if f.signer != nil && string(e.Type) == string(AuditType) { + bufHmac, err := f.signer(ctx, buf.Bytes()) + if err != nil { + return nil, fmt.Errorf("%s: unable to hmac-sha256: %w", op, err) + } + args = append(args, "serialized", base64.RawURLEncoding.EncodeToString(buf.Bytes()), "serialized_hmac", bufHmac) + buf, err = hclogBytes(e.Type, f.jsonFormat, args) + if err != nil { + return nil, fmt.Errorf("%s: unable to format after hmac-sha256: %w", op, err) + } } switch f.jsonFormat { case true: @@ -181,3 +202,25 @@ func (f *hclogFormatterFilter) Process(ctx context.Context, e *eventlogger.Event return e, nil } + +func hclogBytes(eventType eventlogger.EventType, jsonFormat bool, args []interface{}) (*bytes.Buffer, error) { + var buf bytes.Buffer + logger := hclog.New(&hclog.LoggerOptions{ + Output: &buf, + Level: hclog.Trace, + JSONFormat: jsonFormat, + }) + const eventMarker = " event" + switch string(eventType) { + case string(ErrorType): + logger.Error(string(eventType)+eventMarker, args...) + case string(ObservationType), string(SystemType), string(AuditType): + logger.Info(string(eventType)+eventMarker, args...) + default: + // well, we should ever hit this, since we should be specific about the + // event type we're processing, but adding this default to just be sure + // we haven't missed anything. + logger.Trace(string(eventType)+eventMarker, args...) + } + return &buf, nil +} diff --git a/internal/observability/event/hclog_formatter_node_test.go b/internal/observability/event/hclog_formatter_node_test.go index 7834e0fd6..cf7ca1a4d 100644 --- a/internal/observability/event/hclog_formatter_node_test.go +++ b/internal/observability/event/hclog_formatter_node_test.go @@ -2,9 +2,11 @@ package event import ( "context" + "encoding/json" "testing" "github.com/hashicorp/eventlogger" + wrapping "github.com/hashicorp/go-kms-wrapping" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -246,6 +248,32 @@ func TestHclogFormatter_Process(t *testing.T) { } }) } + t.Run("with-signing", func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + wrapper := testWrapper(t) + f, err := newHclogFormatterFilter(true) // produce json formatted events + require.NoError(err) + require.NoError(f.Rotate(wrapper)) + require.NotNil(f.signer) + + e := &eventlogger.Event{ + Type: eventlogger.EventType(AuditType), + Payload: &audit{ + Id: "1", + Version: auditVersion, + Auth: &Auth{UserName: "alice"}, + }, + } + + gotEvent, err := f.Process(ctx, e) + require.NoError(err) + b, ok := gotEvent.Format(string(JSONHclogSinkFormat)) + require.True(ok) + var rep map[string]interface{} + require.NoError(json.Unmarshal(b, &rep)) + assert.NotEmpty(rep["serialized"]) + assert.NotEmpty(rep["serialized_hmac"]) + }) } func Test_hclogFormatterFilter_Name(t *testing.T) { @@ -366,3 +394,41 @@ func Test_newHclogFormatterFilter(t *testing.T) { }) } } + +func Test_hclogFormatterFilter_Rotate(t *testing.T) { + tests := []struct { + name string + f *hclogFormatterFilter + w wrapping.Wrapper + wantIsError error + wantErrContains string + }{ + { + name: "missing-wrapper", + f: &hclogFormatterFilter{}, + wantIsError: ErrInvalidParameter, + wantErrContains: "missing wrapper", + }, + { + name: "valid", + f: &hclogFormatterFilter{}, + w: testWrapper(t), + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert, require := assert.New(t), require.New(t) + err := tt.f.Rotate(tt.w) + if tt.wantIsError != nil { + require.Error(err) + assert.ErrorIs(err, tt.wantIsError) + if tt.wantErrContains != "" { + assert.Contains(err.Error(), tt.wantErrContains) + } + return + } + assert.NotNil(tt.f.signer) + }) + } +} diff --git a/internal/observability/event/signer.go b/internal/observability/event/signer.go new file mode 100644 index 000000000..05c9359c4 --- /dev/null +++ b/internal/observability/event/signer.go @@ -0,0 +1,17 @@ +package event + +import ( + "context" + + "github.com/hashicorp/boundary/internal/libs/crypto" + wrapping "github.com/hashicorp/go-kms-wrapping" +) + +type signer func(context.Context, []byte) (string, error) + +func newSigner(_ context.Context, w wrapping.Wrapper, info, salt []byte) (signer, error) { + const op = "event.hmacHclogSigner" + return func(requestCtx context.Context, data []byte) (string, error) { + return crypto.HmacSha256(requestCtx, data, w, info, salt, crypto.WithPrefix("hmac-sha256:"), crypto.WithBase64Encoding()) + }, nil +} diff --git a/internal/perms/grants.go b/internal/perms/grants.go index 75ea1f3ef..405f7de2b 100644 --- a/internal/perms/grants.go +++ b/internal/perms/grants.go @@ -290,7 +290,7 @@ func Parse(scopeId, grantString string, opt ...Option) (Grant, error) { scope: Scope{Id: scopeId}, } switch { - case scopeId == "global": + case scopeId == scope.Global.String(): grant.scope.Type = scope.Global case strings.HasPrefix(scopeId, scope.Org.Prefix()): grant.scope.Type = scope.Org diff --git a/internal/proto/local/controller/storage/kms/store/v1/audit_key.proto b/internal/proto/local/controller/storage/kms/store/v1/audit_key.proto new file mode 100644 index 000000000..409f15d7d --- /dev/null +++ b/internal/proto/local/controller/storage/kms/store/v1/audit_key.proto @@ -0,0 +1,52 @@ +syntax = "proto3"; + +package controller.storage.kms.store.v1; +option go_package = "github.com/hashicorp/boundary/internal/kms/store;store"; + +import "controller/storage/timestamp/v1/timestamp.proto"; + +message AuditKey { + // private_id is used to access the key via an API + // @inject_tag: gorm:"primary_key" + string private_id = 10; + + // root key id for the key + // @inject_tag: `gorm:"default:null"` + string root_key_id = 20; + + // create_time from the RDBMS + // @inject_tag: `gorm:"default:current_timestamp"` + timestamp.v1.Timestamp create_time = 30; +} + +message AuditKeyVersion { + // private_id is used to access the key version via an API + // @inject_tag: gorm:"primary_key" + string private_id = 10; + + // id for the key version + // @inject_tag: `gorm:"default:null"` + string audit_key_id = 20; + + // root_key_version_id of the version of the root key data. + // @inject_tag: `gorm:"default:null"` + string root_key_version_id = 30; + + // plain-text of the key data. we are NOT storing this plain-text key + // in the db. + // @inject_tag: `gorm:"-" wrapping:"pt,key_data"` + bytes key = 40; + + // ciphertext key data stored in the database + // @inject_tag: `gorm:"column:key;not_null" wrapping:"ct,key_data"` + bytes ct_key = 50; + + // version of the key data. This is not used for optimistic locking, since + // key versions are immutable. It's just the version of the key. + // @inject_tag: `gorm:"default:null"` + uint32 version = 60; + + // create_time from the RDBMS + // @inject_tag: `gorm:"default:current_timestamp"` + timestamp.v1.Timestamp create_time = 70; +} diff --git a/internal/servers/controller/auth/auth.go b/internal/servers/controller/auth/auth.go index ebc6d23bb..6a0a89314 100644 --- a/internal/servers/controller/auth/auth.go +++ b/internal/servers/controller/auth/auth.go @@ -173,7 +173,7 @@ func Verify(ctx context.Context, opt ...Option) (ret VerifyResults) { // Look up scope details to return. We can skip a lookup when using the // global scope switch ret.Scope.Id { - case "global": + case scope.Global.String(): ret.Scope = &scopes.ScopeInfo{ Id: scope.Global.String(), Type: scope.Global.String(), @@ -503,7 +503,7 @@ func (v verifier) performAuthCheck(ctx context.Context) ( // Look up scope details to return. We can skip a lookup when using the // global scope switch v.res.ScopeId { - case "global": + case scope.Global.String(): scopeInfo = &scopes.ScopeInfo{ Id: scope.Global.String(), Type: scope.Global.String(), diff --git a/internal/servers/controller/controller.go b/internal/servers/controller/controller.go index 164259274..ec6d74911 100644 --- a/internal/servers/controller/controller.go +++ b/internal/servers/controller/controller.go @@ -27,6 +27,7 @@ import ( "github.com/hashicorp/boundary/internal/servers/controller/common" "github.com/hashicorp/boundary/internal/session" "github.com/hashicorp/boundary/internal/target" + "github.com/hashicorp/boundary/internal/types/scope" host_plugin_assets "github.com/hashicorp/boundary/plugins/host" "github.com/hashicorp/boundary/sdk/pbs/plugin" external_host_plugins "github.com/hashicorp/boundary/sdk/plugins/host" @@ -167,6 +168,16 @@ func New(ctx context.Context, conf *Config) (*Controller, error) { ); err != nil { return nil, fmt.Errorf("error adding config keys to kms: %w", err) } + // now that the kms is configured, we can get the audit wrapper and rotate + // the eventer audit wrapper, so the emitted events can include encrypt and + // hmac-sha256 data + auditWrapper, err := c.kms.GetWrapper(ctx, scope.Global.String(), kms.KeyPurposeAudit) + if err != nil { + return nil, fmt.Errorf("error getting audit wrapper from kms: %w", err) + } + if c.conf.Eventer.RotateAuditWrapper(ctx, auditWrapper); err != nil { + return nil, fmt.Errorf("error rotating eventer audit wrapper: %w", err) + } jobRepoFn := func() (*job.Repository, error) { return job.NewRepository(dbase, dbase, c.kms) } diff --git a/internal/servers/controller/handlers/scopes/scope_service.go b/internal/servers/controller/handlers/scopes/scope_service.go index a7a4cbb8e..f35ee93ac 100644 --- a/internal/servers/controller/handlers/scopes/scope_service.go +++ b/internal/servers/controller/handlers/scopes/scope_service.go @@ -225,7 +225,7 @@ func (s Service) GetScope(ctx context.Context, req *pbs.GetScopeRequest) (*pbs.G } act := IdActions // Can't delete global so elide it - if p.GetPublicId() == "global" { + if p.GetPublicId() == scope.Global.String() { act = act[0:3] } if outputFields.Has(globals.AuthorizedActionsField) { @@ -596,7 +596,7 @@ func validateGetRequest(req *pbs.GetScopeRequest) error { badFields := map[string]string{} id := req.GetId() switch { - case id == "global": + case id == scope.Global.String(): case strings.HasPrefix(id, scope.Org.Prefix()): if !handlers.ValidId(handlers.Id(id), scope.Org.Prefix()) { badFields["id"] = "Invalidly formatted scope id." @@ -654,7 +654,7 @@ func validateUpdateRequest(req *pbs.UpdateScopeRequest) error { badFields := map[string]string{} id := req.GetId() switch { - case id == "global": + case id == scope.Global.String(): case strings.HasPrefix(id, scope.Org.Prefix()): if !handlers.ValidId(handlers.Id(id), scope.Org.Prefix()) { badFields["id"] = "Invalidly formatted scope id." @@ -711,7 +711,7 @@ func validateDeleteRequest(req *pbs.DeleteScopeRequest) error { badFields := map[string]string{} id := req.GetId() switch { - case id == "global": + case id == scope.Global.String(): badFields["id"] = "Invalid to delete the global scope." case strings.HasPrefix(id, scope.Org.Prefix()): if !handlers.ValidId(handlers.Id(id), scope.Org.Prefix()) { diff --git a/packages-oss.lock/layers/layers.mk b/packages-oss.lock/layers/layers.mk index d91b520ca..473c4e0f4 100755 --- a/packages-oss.lock/layers/layers.mk +++ b/packages-oss.lock/layers/layers.mk @@ -2,38 +2,38 @@ # WARNING: Do not EDIT or MERGE this file, it is generated by packagespec. # *** -LAYER_00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9_ID := 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 -LAYER_00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9_TYPE := base -LAYER_00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9_BASE_LAYER := -LAYER_00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9_SOURCE_INCLUDE := -LAYER_00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9_SOURCE_EXCLUDE := -LAYER_00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9_CACHE_KEY_FILE := .buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9 -LAYER_00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9_ARCHIVE_FILE := .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz -$(eval $(call LAYER,$(LAYER_00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9_ID),$(LAYER_00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9_TYPE),$(LAYER_00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9_BASE_LAYER),$(LAYER_00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9_SOURCE_INCLUDE),$(LAYER_00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9_SOURCE_EXCLUDE),$(LAYER_00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9_CACHE_KEY_FILE),$(LAYER_00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9_ARCHIVE_FILE))) +LAYER_00-base-cc87158f920a83b1c241d68474eed6734b32c511_ID := 00-base-cc87158f920a83b1c241d68474eed6734b32c511 +LAYER_00-base-cc87158f920a83b1c241d68474eed6734b32c511_TYPE := base +LAYER_00-base-cc87158f920a83b1c241d68474eed6734b32c511_BASE_LAYER := +LAYER_00-base-cc87158f920a83b1c241d68474eed6734b32c511_SOURCE_INCLUDE := +LAYER_00-base-cc87158f920a83b1c241d68474eed6734b32c511_SOURCE_EXCLUDE := +LAYER_00-base-cc87158f920a83b1c241d68474eed6734b32c511_CACHE_KEY_FILE := .buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511 +LAYER_00-base-cc87158f920a83b1c241d68474eed6734b32c511_ARCHIVE_FILE := .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz +$(eval $(call LAYER,$(LAYER_00-base-cc87158f920a83b1c241d68474eed6734b32c511_ID),$(LAYER_00-base-cc87158f920a83b1c241d68474eed6734b32c511_TYPE),$(LAYER_00-base-cc87158f920a83b1c241d68474eed6734b32c511_BASE_LAYER),$(LAYER_00-base-cc87158f920a83b1c241d68474eed6734b32c511_SOURCE_INCLUDE),$(LAYER_00-base-cc87158f920a83b1c241d68474eed6734b32c511_SOURCE_EXCLUDE),$(LAYER_00-base-cc87158f920a83b1c241d68474eed6734b32c511_CACHE_KEY_FILE),$(LAYER_00-base-cc87158f920a83b1c241d68474eed6734b32c511_ARCHIVE_FILE))) -LAYER_01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05_ID := 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 -LAYER_01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05_TYPE := ui -LAYER_01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05_BASE_LAYER := 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 -LAYER_01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05_SOURCE_INCLUDE := internal/ui/VERSION -LAYER_01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05_SOURCE_EXCLUDE := -LAYER_01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05_CACHE_KEY_FILE := .buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 -LAYER_01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05_ARCHIVE_FILE := .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz -$(eval $(call LAYER,$(LAYER_01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05_ID),$(LAYER_01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05_TYPE),$(LAYER_01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05_BASE_LAYER),$(LAYER_01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05_SOURCE_INCLUDE),$(LAYER_01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05_SOURCE_EXCLUDE),$(LAYER_01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05_CACHE_KEY_FILE),$(LAYER_01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05_ARCHIVE_FILE))) +LAYER_01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb_ID := 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb +LAYER_01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb_TYPE := ui +LAYER_01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb_BASE_LAYER := 00-base-cc87158f920a83b1c241d68474eed6734b32c511 +LAYER_01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb_SOURCE_INCLUDE := internal/ui/VERSION +LAYER_01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb_SOURCE_EXCLUDE := +LAYER_01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb_CACHE_KEY_FILE := .buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb +LAYER_01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb_ARCHIVE_FILE := .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz +$(eval $(call LAYER,$(LAYER_01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb_ID),$(LAYER_01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb_TYPE),$(LAYER_01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb_BASE_LAYER),$(LAYER_01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb_SOURCE_INCLUDE),$(LAYER_01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb_SOURCE_EXCLUDE),$(LAYER_01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb_CACHE_KEY_FILE),$(LAYER_01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb_ARCHIVE_FILE))) -LAYER_02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be_ID := 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be -LAYER_02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be_TYPE := go-modules -LAYER_02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be_BASE_LAYER := 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 -LAYER_02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be_SOURCE_INCLUDE := go.mod go.sum */go.mod */go.sum -LAYER_02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be_SOURCE_EXCLUDE := -LAYER_02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be_CACHE_KEY_FILE := .buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be -LAYER_02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be_ARCHIVE_FILE := .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz -$(eval $(call LAYER,$(LAYER_02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be_ID),$(LAYER_02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be_TYPE),$(LAYER_02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be_BASE_LAYER),$(LAYER_02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be_SOURCE_INCLUDE),$(LAYER_02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be_SOURCE_EXCLUDE),$(LAYER_02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be_CACHE_KEY_FILE),$(LAYER_02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be_ARCHIVE_FILE))) +LAYER_02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d_ID := 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d +LAYER_02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d_TYPE := go-modules +LAYER_02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d_BASE_LAYER := 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb +LAYER_02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d_SOURCE_INCLUDE := go.mod go.sum */go.mod */go.sum +LAYER_02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d_SOURCE_EXCLUDE := +LAYER_02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d_CACHE_KEY_FILE := .buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d +LAYER_02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d_ARCHIVE_FILE := .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz +$(eval $(call LAYER,$(LAYER_02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d_ID),$(LAYER_02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d_TYPE),$(LAYER_02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d_BASE_LAYER),$(LAYER_02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d_SOURCE_INCLUDE),$(LAYER_02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d_SOURCE_EXCLUDE),$(LAYER_02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d_CACHE_KEY_FILE),$(LAYER_02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d_ARCHIVE_FILE))) -LAYER_03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5_ID := 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 -LAYER_03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5_TYPE := copy-source -LAYER_03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5_BASE_LAYER := 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be -LAYER_03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5_SOURCE_INCLUDE := *.go *.up.sql -LAYER_03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5_SOURCE_EXCLUDE := -LAYER_03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 -LAYER_03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5_ARCHIVE_FILE := .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz -$(eval $(call LAYER,$(LAYER_03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5_ID),$(LAYER_03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5_TYPE),$(LAYER_03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5_BASE_LAYER),$(LAYER_03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5_SOURCE_INCLUDE),$(LAYER_03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5_SOURCE_EXCLUDE),$(LAYER_03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5_CACHE_KEY_FILE),$(LAYER_03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5_ARCHIVE_FILE))) +LAYER_03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde_ID := 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde +LAYER_03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde_TYPE := copy-source +LAYER_03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde_BASE_LAYER := 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d +LAYER_03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde_SOURCE_INCLUDE := *.go *.up.sql +LAYER_03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde_SOURCE_EXCLUDE := +LAYER_03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde_CACHE_KEY_FILE := .buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde +LAYER_03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde_ARCHIVE_FILE := .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz +$(eval $(call LAYER,$(LAYER_03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde_ID),$(LAYER_03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde_TYPE),$(LAYER_03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde_BASE_LAYER),$(LAYER_03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde_SOURCE_INCLUDE),$(LAYER_03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde_SOURCE_EXCLUDE),$(LAYER_03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde_CACHE_KEY_FILE),$(LAYER_03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde_ARCHIVE_FILE))) diff --git a/packages-oss.lock/pkgs.yml b/packages-oss.lock/pkgs.yml index dab9ecbfe..21db8e666 100644 --- a/packages-oss.lock/pkgs.yml +++ b/packages-oss.lock/pkgs.yml @@ -1,11 +1,11 @@ # *** # WARNING: Do not EDIT or MERGE this file, it is generated by packagespec. # *** -lockid: 87386c0c55d5c61a +lockid: 7f1510c592a3019a packagespec-version: 0.2.6 cache-version: 10 packages: - - packagespecid: fa8840f2e78bfa9c58d242426d80f4e30464516f + - packagespecid: 5e182eecadd802ce4fde19b40733c21f1920d680 inputs: BINARY_NAME: boundary BUILD_TAGS: ui @@ -22,33 +22,33 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-fa8840f2e78bfa9c58d242426d80f4e30464516f + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-5e182eecadd802ce4fde19b40733c21f1920d680 POST_PROCESSORS: apple-notarize av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-fa8840f2e78bfa9c58d242426d80f4e30464516f-{{checksum ".buildcache/cache-keys/package-fa8840f2e78bfa9c58d242426d80f4e30464516f"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-5e182eecadd802ce4fde19b40733c21f1920d680-{{checksum ".buildcache/cache-keys/package-5e182eecadd802ce4fde19b40733c21f1920d680"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary aliases: - type: local path: boundary_0.6.2_darwin_amd64.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_darwin_amd64.zip - - packagespecid: 110a848ce5db07e7fc389430350c45261d2d7baa + - packagespecid: 72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d inputs: BINARY_NAME: boundary BUILD_TAGS: ui @@ -65,33 +65,33 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-110a848ce5db07e7fc389430350c45261d2d7baa + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d POST_PROCESSORS: apple-notarize av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-110a848ce5db07e7fc389430350c45261d2d7baa-{{checksum ".buildcache/cache-keys/package-110a848ce5db07e7fc389430350c45261d2d7baa"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d-{{checksum ".buildcache/cache-keys/package-72ea9453ed75bfab19ee6a1fd34e7ac751e5e71d"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary aliases: - type: local path: boundary_0.6.2_darwin_arm64.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_darwin_arm64.zip - - packagespecid: 36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d + - packagespecid: ccae35a6ffa3283396cbe5608aa626a65cf951f4 inputs: BINARY_NAME: boundary BUILD_TAGS: ui @@ -108,33 +108,33 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-ccae35a6ffa3283396cbe5608aa626a65cf951f4 POST_PROCESSORS: av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d-{{checksum ".buildcache/cache-keys/package-36032b26f94d618cdc87dcb7ac3b4eb820a4ab6d"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-ccae35a6ffa3283396cbe5608aa626a65cf951f4-{{checksum ".buildcache/cache-keys/package-ccae35a6ffa3283396cbe5608aa626a65cf951f4"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary aliases: - type: local path: boundary_0.6.2_freebsd_386.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_freebsd_386.zip - - packagespecid: 0922d907d014ef141526a2a3b9d54a3940adcbf3 + - packagespecid: 0101b0c84138c8e37a5affd1171d04237dcd044f inputs: BINARY_NAME: boundary BUILD_TAGS: ui @@ -151,33 +151,33 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-0922d907d014ef141526a2a3b9d54a3940adcbf3 + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-0101b0c84138c8e37a5affd1171d04237dcd044f POST_PROCESSORS: av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-0922d907d014ef141526a2a3b9d54a3940adcbf3-{{checksum ".buildcache/cache-keys/package-0922d907d014ef141526a2a3b9d54a3940adcbf3"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-0101b0c84138c8e37a5affd1171d04237dcd044f-{{checksum ".buildcache/cache-keys/package-0101b0c84138c8e37a5affd1171d04237dcd044f"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary aliases: - type: local path: boundary_0.6.2_freebsd_amd64.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_freebsd_amd64.zip - - packagespecid: ccb0599d3f5653d5bf75173f87d906156ebf1e3d + - packagespecid: 3735bcca8df7adfefa7d79ae87bb6731ed5e074f inputs: BINARY_NAME: boundary BUILD_TAGS: ui @@ -194,33 +194,33 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-ccb0599d3f5653d5bf75173f87d906156ebf1e3d + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-3735bcca8df7adfefa7d79ae87bb6731ed5e074f POST_PROCESSORS: av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-ccb0599d3f5653d5bf75173f87d906156ebf1e3d-{{checksum ".buildcache/cache-keys/package-ccb0599d3f5653d5bf75173f87d906156ebf1e3d"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-3735bcca8df7adfefa7d79ae87bb6731ed5e074f-{{checksum ".buildcache/cache-keys/package-3735bcca8df7adfefa7d79ae87bb6731ed5e074f"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary aliases: - type: local path: boundary_0.6.2_freebsd_arm.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_freebsd_arm.zip - - packagespecid: bced2a380b5354bba95ec9da4a54d06bc0a9b56d + - packagespecid: 81b9112a9e1bd1d33778c4673adbec942c595a7e inputs: BINARY_NAME: boundary BUILD_TAGS: ui @@ -237,33 +237,33 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-bced2a380b5354bba95ec9da4a54d06bc0a9b56d + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-81b9112a9e1bd1d33778c4673adbec942c595a7e POST_PROCESSORS: av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-bced2a380b5354bba95ec9da4a54d06bc0a9b56d-{{checksum ".buildcache/cache-keys/package-bced2a380b5354bba95ec9da4a54d06bc0a9b56d"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-81b9112a9e1bd1d33778c4673adbec942c595a7e-{{checksum ".buildcache/cache-keys/package-81b9112a9e1bd1d33778c4673adbec942c595a7e"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary aliases: - type: local path: boundary_0.6.2_linux_386.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_linux_386.zip - - packagespecid: 9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f + - packagespecid: b04f52247addbb91ec89a35be1ddff9feadf7090 inputs: BINARY_NAME: boundary BUILD_TAGS: ui @@ -280,33 +280,33 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-b04f52247addbb91ec89a35be1ddff9feadf7090 POST_PROCESSORS: av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f-{{checksum ".buildcache/cache-keys/package-9cdfa7cc4f940bdb711b3e4c05e23a771d7ce29f"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-b04f52247addbb91ec89a35be1ddff9feadf7090-{{checksum ".buildcache/cache-keys/package-b04f52247addbb91ec89a35be1ddff9feadf7090"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary aliases: - type: local path: boundary_0.6.2_linux_amd64.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_linux_amd64.zip - - packagespecid: 6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4 + - packagespecid: 25033317f5db33c76740dba3e792063240c317b1 inputs: BINARY_NAME: boundary BUILD_TAGS: ui @@ -323,33 +323,33 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4 + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-25033317f5db33c76740dba3e792063240c317b1 POST_PROCESSORS: av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4-{{checksum ".buildcache/cache-keys/package-6c8214c1a10a7f53964bfb8d2688cadbe8c6b9e4"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-25033317f5db33c76740dba3e792063240c317b1-{{checksum ".buildcache/cache-keys/package-25033317f5db33c76740dba3e792063240c317b1"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary aliases: - type: local path: boundary_0.6.2_linux_arm.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_linux_arm.zip - - packagespecid: 276415ef2d0ac06fb080dd55910bb71613f9c049 + - packagespecid: dc42bacf89f0d78468257a40c404e141fa9272c8 inputs: BINARY_NAME: boundary BUILD_TAGS: ui @@ -366,33 +366,33 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-276415ef2d0ac06fb080dd55910bb71613f9c049 + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-dc42bacf89f0d78468257a40c404e141fa9272c8 POST_PROCESSORS: av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-276415ef2d0ac06fb080dd55910bb71613f9c049-{{checksum ".buildcache/cache-keys/package-276415ef2d0ac06fb080dd55910bb71613f9c049"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-dc42bacf89f0d78468257a40c404e141fa9272c8-{{checksum ".buildcache/cache-keys/package-dc42bacf89f0d78468257a40c404e141fa9272c8"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary aliases: - type: local path: boundary_0.6.2_linux_arm64.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_linux_arm64.zip - - packagespecid: 224e22a10a66af47d1f9468e0ca6c68f2a252599 + - packagespecid: f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0 inputs: BINARY_NAME: boundary BUILD_TAGS: ui @@ -409,33 +409,33 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-224e22a10a66af47d1f9468e0ca6c68f2a252599 + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0 POST_PROCESSORS: av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-224e22a10a66af47d1f9468e0ca6c68f2a252599-{{checksum ".buildcache/cache-keys/package-224e22a10a66af47d1f9468e0ca6c68f2a252599"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0-{{checksum ".buildcache/cache-keys/package-f56a0ca98b1bf7e4f647cedee7db20d8b940a1e0"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary aliases: - type: local path: boundary_0.6.2_netbsd_386.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_netbsd_386.zip - - packagespecid: b971c9df855df00922afb57baeda53f399318c79 + - packagespecid: 8dd295cf186df50e92ed66575b73e97003885428 inputs: BINARY_NAME: boundary BUILD_TAGS: ui @@ -452,33 +452,33 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-b971c9df855df00922afb57baeda53f399318c79 + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-8dd295cf186df50e92ed66575b73e97003885428 POST_PROCESSORS: av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-b971c9df855df00922afb57baeda53f399318c79-{{checksum ".buildcache/cache-keys/package-b971c9df855df00922afb57baeda53f399318c79"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-8dd295cf186df50e92ed66575b73e97003885428-{{checksum ".buildcache/cache-keys/package-8dd295cf186df50e92ed66575b73e97003885428"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary aliases: - type: local path: boundary_0.6.2_netbsd_amd64.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_netbsd_amd64.zip - - packagespecid: 1c8250fee830f8fac2364e7d3e3f82ee5832983e + - packagespecid: 997f9a9e448c02fe17505a5b75635b9dd1104d92 inputs: BINARY_NAME: boundary BUILD_TAGS: ui @@ -495,33 +495,33 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-1c8250fee830f8fac2364e7d3e3f82ee5832983e + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-997f9a9e448c02fe17505a5b75635b9dd1104d92 POST_PROCESSORS: av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-1c8250fee830f8fac2364e7d3e3f82ee5832983e-{{checksum ".buildcache/cache-keys/package-1c8250fee830f8fac2364e7d3e3f82ee5832983e"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-997f9a9e448c02fe17505a5b75635b9dd1104d92-{{checksum ".buildcache/cache-keys/package-997f9a9e448c02fe17505a5b75635b9dd1104d92"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary aliases: - type: local path: boundary_0.6.2_openbsd_386.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_openbsd_386.zip - - packagespecid: a8981b00f8f6bce3fb156f73b58c4e33fe077876 + - packagespecid: 505ab0aca6b881919f05bb8e0125783a5799b4fc inputs: BINARY_NAME: boundary BUILD_TAGS: ui @@ -538,33 +538,33 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-a8981b00f8f6bce3fb156f73b58c4e33fe077876 + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-505ab0aca6b881919f05bb8e0125783a5799b4fc POST_PROCESSORS: av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-a8981b00f8f6bce3fb156f73b58c4e33fe077876-{{checksum ".buildcache/cache-keys/package-a8981b00f8f6bce3fb156f73b58c4e33fe077876"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-505ab0aca6b881919f05bb8e0125783a5799b4fc-{{checksum ".buildcache/cache-keys/package-505ab0aca6b881919f05bb8e0125783a5799b4fc"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary aliases: - type: local path: boundary_0.6.2_openbsd_amd64.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_openbsd_amd64.zip - - packagespecid: ee6ae4147a76888401e2032a2fee0926ef36ad00 + - packagespecid: b7d03bef8d16c702d595798df0cbda643915292c inputs: BINARY_NAME: boundary BUILD_TAGS: ui @@ -581,33 +581,33 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-ee6ae4147a76888401e2032a2fee0926ef36ad00 + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-b7d03bef8d16c702d595798df0cbda643915292c POST_PROCESSORS: av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-ee6ae4147a76888401e2032a2fee0926ef36ad00-{{checksum ".buildcache/cache-keys/package-ee6ae4147a76888401e2032a2fee0926ef36ad00"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-b7d03bef8d16c702d595798df0cbda643915292c-{{checksum ".buildcache/cache-keys/package-b7d03bef8d16c702d595798df0cbda643915292c"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary aliases: - type: local path: boundary_0.6.2_solaris_amd64.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_solaris_amd64.zip - - packagespecid: e3454f0b7ee22d489b83f6daf78d545f4878a79c + - packagespecid: a68848e3db3953d016f73aabb3d732a0333b7bc9 inputs: BINARY_NAME: boundary.exe BUILD_TAGS: ui @@ -624,33 +624,33 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-e3454f0b7ee22d489b83f6daf78d545f4878a79c + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-a68848e3db3953d016f73aabb3d732a0333b7bc9 POST_PROCESSORS: microsoft-notarize av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-e3454f0b7ee22d489b83f6daf78d545f4878a79c-{{checksum ".buildcache/cache-keys/package-e3454f0b7ee22d489b83f6daf78d545f4878a79c"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-a68848e3db3953d016f73aabb3d732a0333b7bc9-{{checksum ".buildcache/cache-keys/package-a68848e3db3953d016f73aabb3d732a0333b7bc9"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary.exe ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary.exe aliases: - type: local path: boundary_0.6.2_windows_386.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_windows_386.zip - - packagespecid: d92fb1003c4ac9e95b86d700d64bf54b76e6fef5 + - packagespecid: 89694dc28c6ddc1d0648b69cefdcc9f67d59a240 inputs: BINARY_NAME: boundary.exe BUILD_TAGS: ui @@ -667,49 +667,49 @@ packages: builtin: BUILD_LAYERS: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz - PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-d92fb1003c4ac9e95b86d700d64bf54b76e6fef5 + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz + PACKAGE_CACHE_KEY_FILE: .buildcache/cache-keys/package-89694dc28c6ddc1d0648b69cefdcc9f67d59a240 POST_PROCESSORS: microsoft-notarize av-scan circleci: BUILDER_CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} - PACKAGE_CACHE_KEY: package-d92fb1003c4ac9e95b86d700d64bf54b76e6fef5-{{checksum ".buildcache/cache-keys/package-d92fb1003c4ac9e95b86d700d64bf54b76e6fef5"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} + PACKAGE_CACHE_KEY: package-89694dc28c6ddc1d0648b69cefdcc9f67d59a240-{{checksum ".buildcache/cache-keys/package-89694dc28c6ddc1d0648b69cefdcc9f67d59a240"}} build-command: VERSION_PKG_PATH=github.com/hashicorp/boundary/version; unset GOPATH; ORIG_PATH=$(pwd); for PLUGIN_TYPE in host; do for CURR_PLUGIN in $(ls $ORIG_PATH/plugins/$PLUGIN_TYPE/mains); do cd $ORIG_PATH/plugins/$PLUGIN_TYPE/mains/$CURR_PLUGIN; go build -v -o $ORIG_PATH/plugins/$PLUGIN_TYPE/assets/boundary-plugin-${PLUGIN_TYPE}-${CURR_PLUGIN} .; cd $ORIG_PATH; done; cd $ORIG_PATH/plugins/$PLUGIN_TYPE/assets; for CURR_PLUGIN in $(ls); do gzip -9 $CURR_PLUGIN; done; cd $ORIG_PATH; done; go build -v -tags 'ui' -ldflags "-X $VERSION_PKG_PATH.GitCommit=$PACKAGE_SOURCE_ID -X $VERSION_PKG_PATH.Version=0.6.2 -X $VERSION_PKG_PATH.VersionPrerelease=" -o $OUTPUT_DIR/boundary.exe ./cmd/boundary && cd $OUTPUT_DIR && zip $PACKAGE_ZIP_NAME boundary.exe aliases: - type: local path: boundary_0.6.2_windows_amd64.zip - type: public-hc-releases path: boundary/boundary_0.6.2/boundary_0.6.2_windows_amd64.zip -base-image: docker.mirror.hashicorp.services/golang@sha256:c301ce41458847a02caea52b5c2fd2a18b34f33785ddd676d38defe286bb946b +base-image: docker.mirror.hashicorp.services/golang@sha256:3b27ac95762ce1340a4824dc3cab2dc9d63f194f0899a0a9887402c1b1463f41 layers: - depth: 0 final: false type: base - id: 849b90f357ec2b0e340c99c0a49e883d36073bd9 - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 + id: cc87158f920a83b1c241d68474eed6734b32c511 + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 parentname: "" parenttype: "" parentid: "" - cachekeyfile: .buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9 + cachekeyfile: .buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511 sourceinclude: "" sourceexclude: "" - archivefile: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz + archivefile: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz dockerfile: | # syntax=docker.mirror.hashicorp.services/docker/dockerfile:1.1.7-experimental - FROM docker.mirror.hashicorp.services/golang@sha256:c301ce41458847a02caea52b5c2fd2a18b34f33785ddd676d38defe286bb946b + FROM docker.mirror.hashicorp.services/golang@sha256:3b27ac95762ce1340a4824dc3cab2dc9d63f194f0899a0a9887402c1b1463f41 COPY . ./ ENV \ GOPATH= \ @@ -730,24 +730,24 @@ layers: builtin: LAYER_LIST: - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz circleci: CACHE_KEY_PREFIX_LIST: - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} childcount: 1 - depth: 1 final: false type: ui - id: 7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - parentname: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 + id: dfc937906b9b645655c44bc782ef13c64ebe8dbb + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + parentname: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 parenttype: base - parentid: 849b90f357ec2b0e340c99c0a49e883d36073bd9 - cachekeyfile: .buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 + parentid: cc87158f920a83b1c241d68474eed6734b32c511 + cachekeyfile: .buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb sourceinclude: internal/ui/VERSION sourceexclude: "" - archivefile: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + archivefile: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz dockerfile: | # syntax=docker.mirror.hashicorp.services/docker/dockerfile:1.1.7-experimental ARG BASE_IMAGE @@ -767,28 +767,28 @@ layers: builtin: LAYER_LIST: - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz circleci: CACHE_KEY_PREFIX_LIST: - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} childcount: 1 - depth: 2 final: false type: go-modules - id: a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - parentname: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 + id: 74c0c94188690e22d738cb1784f8feba7c3dc00d + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + parentname: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb parenttype: ui - parentid: 7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - cachekeyfile: .buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be + parentid: dfc937906b9b645655c44bc782ef13c64ebe8dbb + cachekeyfile: .buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d sourceinclude: go.mod go.sum */go.mod */go.sum sourceexclude: "" - archivefile: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + archivefile: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz dockerfile: | # syntax=docker.mirror.hashicorp.services/docker/dockerfile:1.1.7-experimental ARG BASE_IMAGE @@ -799,32 +799,32 @@ layers: builtin: LAYER_LIST: - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz circleci: CACHE_KEY_PREFIX_LIST: - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} childcount: 1 - depth: 3 final: true type: copy-source - id: 5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - parentname: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be + id: 6be6bbcf469c2d26620194eeee87f0c4ba470bde + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + parentname: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d parenttype: go-modules - parentid: a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - cachekeyfile: .buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 + parentid: 74c0c94188690e22d738cb1784f8feba7c3dc00d + cachekeyfile: .buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde sourceinclude: '*.go *.up.sql' sourceexclude: "" - archivefile: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + archivefile: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz dockerfile: | # syntax=docker.mirror.hashicorp.services/docker/dockerfile:1.1.7-experimental ARG BASE_IMAGE @@ -834,21 +834,21 @@ layers: builtin: LAYER_LIST: - type: copy-source - name: 03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5 - archive: .buildcache/archives/03-copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5.tar.gz + name: 03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde + archive: .buildcache/archives/03-copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde.tar.gz - type: go-modules - name: 02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be - archive: .buildcache/archives/02-go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be.tar.gz + name: 02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d + archive: .buildcache/archives/02-go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d.tar.gz - type: ui - name: 01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05 - archive: .buildcache/archives/01-ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05.tar.gz + name: 01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb + archive: .buildcache/archives/01-ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb.tar.gz - type: base - name: 00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9 - archive: .buildcache/archives/00-base-849b90f357ec2b0e340c99c0a49e883d36073bd9.tar.gz + name: 00-base-cc87158f920a83b1c241d68474eed6734b32c511 + archive: .buildcache/archives/00-base-cc87158f920a83b1c241d68474eed6734b32c511.tar.gz circleci: CACHE_KEY_PREFIX_LIST: - - copy-source_5c01_{{checksum ".buildcache/cache-keys/copy-source-5c01da64a31c9bfe7ba38f51d95e8bf99c0842f5"}} - - go-modules_a25c_{{checksum ".buildcache/cache-keys/go-modules-a25cdf16b83859e7e53c8fd5272e4c6b8366e2be"}} - - ui_7d0e_{{checksum ".buildcache/cache-keys/ui-7d0eb4b8e23fd3d22cf70da1dff7e4359673ce05"}} - - base_849b_{{checksum ".buildcache/cache-keys/base-849b90f357ec2b0e340c99c0a49e883d36073bd9"}} + - copy-source_6be6_{{checksum ".buildcache/cache-keys/copy-source-6be6bbcf469c2d26620194eeee87f0c4ba470bde"}} + - go-modules_74c0_{{checksum ".buildcache/cache-keys/go-modules-74c0c94188690e22d738cb1784f8feba7c3dc00d"}} + - ui_dfc9_{{checksum ".buildcache/cache-keys/ui-dfc937906b9b645655c44bc782ef13c64ebe8dbb"}} + - base_cc87_{{checksum ".buildcache/cache-keys/base-cc87158f920a83b1c241d68474eed6734b32c511"}} childcount: 0 diff --git a/packages-oss.yml b/packages-oss.yml index b8789f581..b2b924c1a 100644 --- a/packages-oss.yml +++ b/packages-oss.yml @@ -51,8 +51,8 @@ package-aliases: template: >- boundary/{{.BUNDLE_NAME}}/{{.BUNDLE_NAME}}_{{.GOOS}}_{{.GOARCH}}.zip -# golang:1.17.2-buster -base-image: "docker.mirror.hashicorp.services/golang@sha256:c301ce41458847a02caea52b5c2fd2a18b34f33785ddd676d38defe286bb946b" +# golang:1.17.3-bullseye +base-image: "docker.mirror.hashicorp.services/golang@sha256:3b27ac95762ce1340a4824dc3cab2dc9d63f194f0899a0a9887402c1b1463f41" layers: - name: base diff --git a/sdk/go.mod b/sdk/go.mod index 76b0ca1a3..f84eb0c8b 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -6,7 +6,7 @@ require ( github.com/fatih/color v1.12.0 // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/google/go-cmp v0.5.6 // indirect - github.com/hashicorp/eventlogger v0.1.0 + github.com/hashicorp/eventlogger v0.1.1-0.20211104100552-e1e801e50144 github.com/hashicorp/eventlogger/filters/encrypt v0.1.6-0.20211027211326-5db60a48f239 github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-hclog v0.16.2 diff --git a/sdk/go.sum b/sdk/go.sum index cb8ed6f7a..fee39e1f1 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -241,8 +241,9 @@ github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFb github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/eventlogger v0.1.0 h1:S6xc4gZVzewuDUP4R4Ngko419h/CGDuV/b4ADL3XLik= github.com/hashicorp/eventlogger v0.1.0/go.mod h1:a3IXf1aEJfpCPzseTOrwKj4fVW/Qn3oEmpQeaIznzH0= +github.com/hashicorp/eventlogger v0.1.1-0.20211104100552-e1e801e50144 h1:PCl0HtlVnIIloIozAKvjICu6K4IghKXAKNny3R3b2nI= +github.com/hashicorp/eventlogger v0.1.1-0.20211104100552-e1e801e50144/go.mod h1:a3IXf1aEJfpCPzseTOrwKj4fVW/Qn3oEmpQeaIznzH0= github.com/hashicorp/eventlogger/filters/encrypt v0.1.6-0.20211027211326-5db60a48f239 h1:Yh9tY0lige+y0trmjQeT9NRDo6+YvtNAzbmUNOsIUzI= github.com/hashicorp/eventlogger/filters/encrypt v0.1.6-0.20211027211326-5db60a48f239/go.mod h1:8rcez7Kw1zanB0/074qnOuGu7zxmNh9Xr2ZI+K4xVIA= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= diff --git a/website/content/docs/installing/no-gen-resources.mdx b/website/content/docs/installing/no-gen-resources.mdx index 99d01017f..f92f0b1f7 100644 --- a/website/content/docs/installing/no-gen-resources.mdx +++ b/website/content/docs/installing/no-gen-resources.mdx @@ -118,7 +118,12 @@ From this command, you can see the flags available to skip the creation of auto- To initialize the Boundary database without generated resources: ``` -$ boundary database init -skip-initial-login-role-creation -config /etc/boundary.hcl +$ boundary database init \ + -skip-auth-method-creation \ + -skip-host-resources-creation \ + -skip-scopes-creation \ + -skip-target-creation \ + -config /etc/boundary.hcl ``` When you start Boundary, you will effectively have a blank sheet to work against. The initial migrations in the database have been run (note that this includes creating special users like `u_anon` and the `global` scope) and the internal keyrings have been initialized. From here, it's required that