Commit graph

56 commits

Author SHA1 Message Date
Nick Cabatoff
2d2c9c2f0c
Sync CE with Ent: improve slack notifications for test failures (#22656) 2023-08-30 13:57:31 -04:00
Nick Cabatoff
0f5a39cc91
Fix some ci inconsistencies, and logic for security scan and go test comment (#22563)
* Remove diff-oss-ci

* Eliminate another inconsistency

* Fix logic: we want to only apply the fork check on the CE repo.  On ent we want to always run the job.

---------

Co-authored-by: hc-github-team-secure-vault-core <github-team-secure-vault-core@hashicorp.com>
2023-08-25 11:44:17 -04:00
Ryan Cragun
71fea81310
ci: fix test timing reports (#22537)
* Fix saving test timing reports when tests fail
* Use a different cache key for different test modes

Signed-off-by: Ryan Cragun <me@ryan.ec>
2023-08-24 16:03:53 +00:00
Nick Cabatoff
a0217ad017
See if this fixes the disk full errors in CI (#22532)
Co-authored-by: hc-github-team-secure-vault-core <github-team-secure-vault-core@hashicorp.com>
2023-08-23 20:16:13 +00:00
Hamid Ghaf
b5e9963703
adding testonly CI test job (#22439)
* adding testonly CI test job

* small instance for testonly tests

* feedback

* shopt

* disable glob expansion

* revert back to a large instance

* fix a mistake
2023-08-18 19:49:33 +00:00
Violet Hynes
71a31d4055
Skip security-scan and test comment notifications on community PRs (#22351) 2023-08-16 09:19:53 -04:00
Kuba Wieczorek
76d8ab6f43
CI: fix conditional statements for notification and test report collection jobs (#22157) 2023-08-02 13:40:24 +01:00
Hamid Ghaf
437a7ab934
move draft PR condition outside of verify-changes (#22002)
* move draft PR condition outside of verify-changes

* remove some stuff
2023-07-21 08:58:34 -07:00
Ryan Cragun
1a46088afb
[QT-590] Optimize the CI testing workflow (#21959)
We further optimize the CI workflow for better costs and speed.
We tested the Go CI workflows across several instance classes
and update our compute choices. We achieve an average execution
speed improvement of 2-2.5 minutes per test workflow while
reducing the infrastructure cost by about 20%. We also also save
another ~2 minutes by installing `gotestsum` from the Github release
instead of downloading the Go modules and compiling it every time.

In addition to the speed improvements, we also further reduced our cache
usage by updating the `security-scan` workflow to not cache Go modules.
We also use the `cache/save` and `cache/restore` actions for timing
caches. This results is saving half as many cache results for timing
data.

*UI test results*
results for 2x runs:
* c6a.2xlarge (12m54s, 11m55s)
* c6a.4xlarge (10m47s, 11m6s)
* c6a.8xlarge (11m32s, 10m51s)
* m5.2xlarge (15m23s, 14m16s)
* m5.4xlarge (14m48s, 12m54s)
* m5.8xlarge (12m27s, 12m24s)
* m6a.2xlarge (11m55s, 12m20s)
* m6a.4xlarge (10m54s, 10m43s)
* m6a.8xlarge (10m33s, 10m51s)

Current runner:
m5.2xlarge (15m23s, 14m16s, avg 14m50s) @ 0.448/hr = $0.11

Faster candidates
* c6a.2xlarge (12m54s, 11m55s, avg 12m24s) @ 0.3816/hr = $0.078
* m6a.2xlarge (11m55s, 12m20s, avg 12m8s) @ 0.4032/hr = $0.081
* c6a.4xlarge (10m47s, 11m6s, avg 10m56s) @ 0.7632/hr = $0.139
* m6a.4xlarge (10m54s, 10m43s, avg 10m48s) @ 0.8064/hr = $0.140

Best bang for the buck for test-ui:
  m6a.2xlarge, > 25% cost savings from current and we save ~2.5 minutes.

*Go test results*
During testing the external replication tests, when not broken up, will
always take the longest. Our original analysis focuses on this job.
Most other tests groups will finish ~3m faster so we'll use subtract
that time when estimating the cost for the whole job.

external replication job results:
* c6a.2xlarge (20m49s, 19m20s, avg 20m5s)
* c6a.4xlarge (19m1s, 19m38s, avg 19m20s)
* c6a.8xlarge (19m51s, 18m54s, avg 19m23s)
* m5.2xlarge (22m12s, 20m29s, avg 21m20s)
* m5.4xlarge (20m7s, 19m3s, avg 20m35s)
* m5.8xlarge (20m24s, 19m42s, avg 20m3s)
* m6a.2xlarge (21m10s, 19m37s, avg 20m23s)
* m6a.4xlarge (18m58s, 19m51s, avg 19m24s)
* m6a.8xlarge (19m27s, 18m47s, avg 19m7s)

There is little separation in time when we increase class size. In the
best case a class size increase yields about a ~5% performance increase
and doubles the cost. For test-go our best bang for the buck is
certainly going to be in the 2xlarge class.

Current runner:
m5.2xlarge (22m12s, 20m29s, avg 21m20s) @ 0.448/hr (16@avg-3m + 1@avg) = $2.35

Candidates in the same class
* c6a.2xlarge (20m49s, 19m20s, avg 20m5s) @ 0.3816/hr (16@avg-3m + 1@avg) = $1.86
* m6a.2xlarge (21m10s, 19m37s, avg 20m23s) @ 0.4032/hr (16@avg-3m + 1@avg) = $2.00

Best bang for the buck for test-go:
  c6a.2xlarge: 20% cost savings and save about ~2.25 minutes.

We ran the tests with similar instances and saw similar execution times as
with test-go. Therefore we can use the same recommended instance sizes.

After breaking up test-go's external replication tests, the longest group
was shorter on average. I choose to look at group 3 as it was usually the
longest grouping:

* c6a.2xlarge: (14m51s, 14m48s)
* c6a.4xlarge: (14m14s, 14m15)
* c6a.8xlarge: (14m0s, 13m54s)
* m5.2xlarge: (15m36s, 15m35s)
* m5.4xlarge: (14m46s, 14m49s)
* m5.8xlarge: (14m25s, 14m25s)
* m6a.2xlarge: 14m51s, 14m53s)
* m6a.4xlarge: 14m16s, 14m16s)
* m6a.8xlarge: (14m2s, 13m57s)

Again, we see ~5% performance gains between the 2x and 8x instance classes
at quadruple the cost. The c6a and m6a families are almost identical, with
the c6a class being cheaper.

*Notes*
* UI and Go Test timing results: https://github.com/hashicorp/vault-enterprise/actions/runs/5556957460/jobs/10150759959
* Go Test with data race detection timing results: https://github.com/hashicorp/vault-enterprise/actions/runs/5558013192
* Go Test with replication broken up: https://github.com/hashicorp/vault-enterprise/actions/runs/5558490899

Signed-off-by: Ryan Cragun <me@ryan.ec>
2023-07-20 14:10:08 -06:00
miagilepner
3b00dde1ba
Limit number of tests in CI comment (#21936)
* limit test comments

* remove unecessary tee

* fix go test condition

* fix

* fail test

* remove ailways entirely

* fix columns

* make a bunch of tests fail

* separate line

* include Failures:

* remove test fails

* fix whitespace
2023-07-20 11:21:49 +02:00
mickael-hc
fcaf87fd16
Update action pinning (#21913)
* pin test-summary/action
* update and pin add-to-project
2023-07-19 13:53:28 -04:00
miagilepner
dc104898f7
VAULT-17660: create CI github comment (#21853)
* fix multiline

* shellcheck, and success message for builds

* add full path

* cat the summary

* fix and faster

* fix if condition

* base64 in a separate step

* echo

* check against empty string

* add echo

* only use matrix ids

* only id

* echo matrix

* remove wrapping array

* tojson

* try echo again

* use jq to get packages

* don't quote

* only run binary tests once

* only run binary tests once

* test what's wrong with the binary

* separate file

* use matrix file

* failed test

* update comment on success

* correct variable name

* bae64 fix

* output to file

* use multiline

* fix

* fix formatting

* fix newline

* fix whitespace

* correct body, remove comma

* small fixes

* shellcheck

* another shellcheck fix

* fix deprecation checker

* only run comments for prs

* Update .github/workflows/test-go.yml

Co-authored-by: Mike Palmiotto <mike.palmiotto@hashicorp.com>

* Update .github/workflows/test-go.yml

Co-authored-by: Mike Palmiotto <mike.palmiotto@hashicorp.com>

* fixes

---------

Co-authored-by: Mike Palmiotto <mike.palmiotto@hashicorp.com>
2023-07-18 17:31:29 +02:00
Ryan Cragun
a98c0d9cbe
actions: always cache all required Go modules (#21792)
* Make sure that we always download all of the required modules.
* Fix actions/set-up-go path for UI test
* Fix broken go.mod in hcp_link

Signed-off-by: Ryan Cragun <me@ryan.ec>
2023-07-12 20:21:09 +00:00
Ryan Cragun
c43345c452
[QT-589] Use the go module cache between CI and build (#21764)
In order to reliably store Go test times in the Github Actions cache we
need to reduce our cache thrashing by not using more than 10gb over all
of our caches. This change reduces our cache usage significantly by
sharing Go module cache between our Go CI workflows and our build
workflows. We lose our per-builder cache which will result in a bit of
performance hit, but we'll enable better automatic rebalancing of our CI
workflows. Overall we should see a per branch reduction in cache sizes
from ~17gb to ~850mb.

Some preliminary investigation into this new strategy:

Prior build workflow strategy on a cache miss:
  Download modules: ~20s
  Build Vault: ~40s
  Upload cache: ~30s
  Total: ~1m30s

Prior build workflow strategy on a cache hit:
  Download and decompress modules and build cache: ~12s
  Build Vault: ~15s
  Total: ~28s

New build workflow strategy on a cache miss:
  Download modules: ~20
  Build Vault: ~40s
  Upload cache: ~6s
  Total: ~1m6s

New build workflow strategy on a cache hit:
  Download and decompress modules: ~3s
  Build Vault: ~40s
  Total: ~43s

Expected time if we used no Go caching:
  Download modules: ~20
  Build Vault: ~40s
  Total: ~1m

Signed-off-by: Ryan Cragun <me@ryan.ec>
2023-07-12 17:55:16 +00:00
Kuba Wieczorek
5c5c2abc63
VAULT-12958 Add link to logs to the test failure summary in CI (#21736) 2023-07-12 18:29:31 +01:00
miagilepner
bfa93fdeda
VAULT-14696: Pin 3rd party actions (#21782)
* use shas instead of versions and fix milestones

* remove trailing space
2023-07-12 17:58:45 +02:00
Hamid Ghaf
c5fbc19d36
run go tests if verify-changes is skipped (#21776)
* run go tests if verify-changes is skipped

* experiment for a draft pr

* revert to old behaviour

* add always
2023-07-12 07:17:26 -07:00
Hamid Ghaf
3443ff1cc1
use verify changes for docs to skip tests (#21620)
* use verify changes for docs to skip tests

* add verify-changes to the needed jobs

* skip go tests for doc/ui only changes

* fix a job ref

* change names, remove script

* remove ui conditions

* separate flags

* feedback
2023-07-11 09:06:48 -07:00
Kuba Wieczorek
ece2995ee1
Ensure test failure summaries job doesn't get skipped (#21709) 2023-07-10 17:47:48 +00:00
miagilepner
5919645a70
Switch test-completed to always() (#21654) 2023-07-10 12:34:02 +02:00
Kuba Wieczorek
5defa54bd4
VAULT-17592 Extract failed Go test results across runners (#21625) 2023-07-07 16:18:29 +01:00
miagilepner
8c18f24b9d
VAULT-17734, VAULT-17735: Combine linters (#21611)
* combine into one checker

* combine and simplify ci checks

* add to test package list

* remove testing test

* only run deprecations check

* only run deprecations check

* remove unneeded repo check

* fix bash options
2023-07-06 15:18:42 +02:00
Violet Hynes
02f43ecbc2
VAULT-17590 Enterprise-side changes (using CI Vault over GH Secret) (#21587)
* VAULT-17590 Add failure notifications for OSS builds

* VAULT-17590 Incur build failure for testing purposes

* VAULT-17590 head_ref for testing

* VAULT-17590 rework to rely on completed status checks

* VAULT-17590 Use slackapi/slack-github-action

* VAULT-17590 Remember dollar sign

* VAULT-17590 finalize PR

* VAULT-17590 add extra empty line

* Update .github/workflows/build.yml

Co-authored-by: Kuba Wieczorek <kuba.wieczorek@hashicorp.com>

* Update .github/workflows/ci.yml

Co-authored-by: Kuba Wieczorek <kuba.wieczorek@hashicorp.com>

* VAULT-17590 fix typo

* VAULT-17590 ent workflow

* VAULT-17590 typo

---------

Co-authored-by: Kuba Wieczorek <kuba.wieczorek@hashicorp.com>
2023-07-06 08:50:51 -04:00
Ryan Cragun
4f811661f8
[QT-576] Optimize build workflow (#21486)
Improve our build workflow execution time by using custom runners,
improved caching and conditional Web UI builds.

Runners
-------
We improve our build times[0] by using larger custom runners[1] when
building the UI and Vault.

Caching
-------
We improve Vault caching by keeping a cache for each build job. This
strategy has the following properties which should result in faster
build times when `go.sum` hasn't been changed from prior builds, or
when a pull request is retried or updated after a prior successful
build:

* Builds will restore cached Go modules and Go build cache according to
  the Go version, platform, architecture, go tags, and hash of `go.sum`
  that relates to each individual build workflow. This reduces the
  amount of time it will take to download the cache on hits and upload
  the cache on misses.
* Parallel build workflows won't clobber each others build cache. This
  results in much faster compile times after cache hits because the Go
  compiler can reuse the platform, architecture, and tag specific build
  cache that it created on prior runs.
* Older modules and build cache will not be uploaded when creating a new
  cache. This should result in lean cache sizes on an ongoing basis.
* On cache misses we will have to upload our compressed module and build
  cache. This will slightly extend the build time for pull requests that
  modify `go.sum`.

Web UI
------
We no longer build the web UI in every build workflow. Instead we separate
the UI building into its own workflow and cache the resulting assets.
The same UI assets are restored from cache during build worklows. This
strategy has the following properties:

* If the `ui` directory has not changed from prior builds we'll restore
  `http/web_ui` from cache and skip building the UI for no reason.
* We continue to use the built-in `yarn` caching functionality in
  `action/setup-node`. The default mode saves the `yarn` global cache.
  to improve UI build times if the cache has not been modified.

Changes
-------
* Add per platform/archicture Go module and build caching
* Move UI building into a separate job and cache the result
* Restore UI cache during build
* Pin workflows

Notes
-----
[0] https://hashicorp.atlassian.net/browse/QT-578
[1] https://github.com/hashicorp/vault/actions/runs/5415830307/jobs/9844829929

Signed-off-by: Ryan Cragun <me@ryan.ec>
2023-07-05 19:25:22 +00:00
Violet Hynes
44354eb147
VAULT-17590 Add failure notifications for OSS builds (#21561)
* VAULT-17590 Add failure notifications for OSS builds

* VAULT-17590 Incur build failure for testing purposes

* VAULT-17590 head_ref for testing

* VAULT-17590 rework to rely on completed status checks

* VAULT-17590 Use slackapi/slack-github-action

* VAULT-17590 Remember dollar sign

* VAULT-17590 finalize PR

* VAULT-17590 add extra empty line

* Update .github/workflows/build.yml

Co-authored-by: Kuba Wieczorek <kuba.wieczorek@hashicorp.com>

* Update .github/workflows/ci.yml

Co-authored-by: Kuba Wieczorek <kuba.wieczorek@hashicorp.com>

---------

Co-authored-by: Kuba Wieczorek <kuba.wieczorek@hashicorp.com>
2023-07-05 16:44:39 +00:00
miagilepner
eecae3a827
VAULT-17586: Add concurency to ci and build workflows (#21550) 2023-07-04 13:43:47 +02:00
Paul Banks
fbcd92dd88
Remove drift from Ent repo (#21379) 2023-06-21 13:22:07 +00:00
Peter Wilson
cf8cf84db9
fix to prevent extra CI running when docs label is added (#21378) 2023-06-21 11:20:55 +00:00
Kuba Wieczorek
567917efac
CI: make tests-completed fail when setup-go-cache fails (#21197) 2023-06-13 21:01:48 +01:00
Nick Cabatoff
43d482e0d5
Stop overwriting the test results from the different families (normal, -race, -fips) (#20959) 2023-06-02 17:39:08 +01:00
Angel Garbarino
735e2866db
Address Test-ui suite failure for package install issues (#20756)
* fix

* apparently its going to take me two commits.. for one line.

* test removing the installation of the packages.

* remove browser dependencies
2023-05-24 15:24:47 -06:00
Ryan Cragun
157b976253
ci: request vpc quota increase (#20360)
* Fix regions on two service quotas
* Request an increase in VPCs per region
* Pin github actions workflows

Signed-off-by: Ryan Cragun <me@ryan.ec>
2023-05-22 11:18:06 -06:00
Nick Cabatoff
21bde241e0
Don't run build workflow on draft PRs. (#20443) 2023-05-01 13:52:41 -04:00
Nick Cabatoff
8a86f592d3
CI tests should run on release branches as well as main (#20444) 2023-05-01 15:42:03 +00:00
Nick Cabatoff
7012ce2637
Use a dedicated runner for the binary-based tests. (#20377) 2023-04-27 09:41:49 -04:00
claire bontempo
f5dd114273
Run UI tests on PRs with "ui" label (#20209)
* add conditional for label

* VAULT-14643 link jira
2023-04-18 12:03:35 -07:00
Kuba Wieczorek
e78d9a3052
Stop running UI tests on every PR into a release branch in CI (#20149) 2023-04-13 18:10:17 +00:00
Kuba Wieczorek
4b843dc7a5
Add smaller runner groups for CI jobs (#20081) 2023-04-11 14:05:15 -04:00
Marc Boudreau
4caff43efb
add workflow_dispatch trigger to ci.yml workflow (#19979) 2023-04-05 10:03:08 -04:00
Jordan Reimer
7f3aab7199
Node Version CI Update (#19978)
* updates github workflows to read node version from .nvmrc file

* updates to double quotes for shell expression

* removes set-output workflow command

* updates to use node-version-file option for gh workflows

* pins node version to 16
2023-04-04 15:39:17 -06:00
Jordan Reimer
439a16a093
Address Critical Vulnerabilities from Dependencies (#19901)
* cleans up dependencies with critical warnigns

* adds changelog entry

* updates dockerfiles and ci github workflow to use node 16

* removes ui gh workflow not being used
2023-04-03 15:24:38 -06:00
Kuba Wieczorek
de381c30f6
Ensure tests-completed job fails if required jobs either fail or are cancelled (#19948)
Otherwise, the tests-completed job should succeed, including when the test-ui
job is skipped.
2023-04-03 15:16:42 -04:00
Marc Boudreau
fc631700c6
use correct commit hash from latest branch of browser-actions/setup-chrome (#19876) 2023-03-31 12:17:16 -04:00
Kuba Wieczorek
da0452db41
Update the if conditions for test-go jobs in CI (#19809)
* Update the if conditions for test-go jobs in CI

* Fix errors in comments

* Update the if condition for the UI tests
2023-03-30 16:27:42 -04:00
Kuba Wieczorek
525bce060d
Make the suffix for CI Go test matrix jobs optional (#19752) 2023-03-30 15:09:57 -04:00
Kuba Wieczorek
9b379ae283
Update tests-completed job in CI to appear as success when one of the… (#19806)
* Update tests-completed job in CI to appear as success when one of the required checks is skipped (but not cancelled)

* Fix typo in tests-completed

---------

Co-authored-by: Marc Boudreau <marc.boudreau@hashicorp.com>
2023-03-30 14:24:05 -04:00
Kuba Wieczorek
e192187c68
Add larger runners for CI (#19857) 2023-03-30 17:58:32 +01:00
Kuba Wieczorek
daf4ec2b4f
Add a new category of runners to the CI workflow… (#19807)
* Add a new category of runners to the CI workflow; use new, dedicated runners on OSS; adjust runner sizes for jobs

Co-authored-by: Marc Boudreau <marc.boudreau@hashicorp.com>
2023-03-30 16:41:40 +01:00
claire labry
d26d4c0fa4
fix github ref (#19805)
* fix github ref

* udpate comment
2023-03-28 15:59:27 -05:00
Marc Boudreau
58bbcad74b
Marcboudreau/vault 13760/add test UI to completed (#19747)
* remove check of circleci configuration from pre-commit hook

* add dependency on test-ui for tests-completed job
2023-03-24 13:20:49 -04:00