From 44a6e04d135bebae584e97f98f3089ad74bed522 Mon Sep 17 00:00:00 2001 From: Alexander Zavorotynskiy Date: Thu, 30 Jun 2022 16:06:33 +0200 Subject: [PATCH 1/4] feat(backend/assets): added proxy support for cacher module --- backend/cmd/assets/main.go | 8 +------- backend/internal/assets/cacher/cacher.go | 10 ++++++---- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/backend/cmd/assets/main.go b/backend/cmd/assets/main.go index 5627d0be8..86eb4865f 100644 --- a/backend/cmd/assets/main.go +++ b/backend/cmd/assets/main.go @@ -24,13 +24,7 @@ func main() { cfg := config.New() - cacher := cacher.NewCacher( - cfg.AWSRegion, - cfg.S3BucketAssets, - cfg.AssetsOrigin, - cfg.AssetsSizeLimit, - metrics, - ) + cacher := cacher.NewCacher(cfg, metrics) totalAssets, err := metrics.RegisterCounter("assets_total") if err != nil { diff --git a/backend/internal/assets/cacher/cacher.go b/backend/internal/assets/cacher/cacher.go index fe8cc7ef8..4d2470578 100644 --- a/backend/internal/assets/cacher/cacher.go +++ b/backend/internal/assets/cacher/cacher.go @@ -17,6 +17,7 @@ import ( "github.com/pkg/errors" + config "openreplay/backend/internal/config/assets" "openreplay/backend/pkg/storage" "openreplay/backend/pkg/url/assets" ) @@ -33,8 +34,8 @@ type cacher struct { downloadedAssets syncfloat64.Counter } -func NewCacher(region string, bucket string, origin string, sizeLimit int, metrics *monitoring.Metrics) *cacher { - rewriter := assets.NewRewriter(origin) +func NewCacher(cfg *config.Config, metrics *monitoring.Metrics) *cacher { + rewriter := assets.NewRewriter(cfg.AssetsOrigin) if metrics == nil { log.Fatalf("metrics are empty") } @@ -44,16 +45,17 @@ func NewCacher(region string, bucket string, origin string, sizeLimit int, metri } return &cacher{ timeoutMap: newTimeoutMap(), - s3: storage.NewS3(region, bucket), + s3: storage.NewS3(cfg.AWSRegion, cfg.S3BucketAssets), httpClient: &http.Client{ Timeout: time.Duration(6) * time.Second, Transport: &http.Transport{ + Proxy: http.ProxyFromEnvironment, TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, }, }, rewriter: rewriter, Errors: make(chan error), - sizeLimit: sizeLimit, + sizeLimit: cfg.AssetsSizeLimit, downloadedAssets: downloadedAssets, } } From 4bda9c6e5bab4fbf341ac5e32126d0408c9e5055 Mon Sep 17 00:00:00 2001 From: Alexander Zavorotynskiy Date: Thu, 30 Jun 2022 16:12:06 +0200 Subject: [PATCH 2/4] feat(backend/storage): set retention env variable as not required --- backend/pkg/storage/s3.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/pkg/storage/s3.go b/backend/pkg/storage/s3.go index 3e66aa579..67ebaaf4f 100644 --- a/backend/pkg/storage/s3.go +++ b/backend/pkg/storage/s3.go @@ -3,6 +3,7 @@ package storage import ( "io" "net/url" + "os" "sort" "strconv" @@ -103,7 +104,7 @@ func (s3 *S3) GetFrequentlyUsedKeys(projectID uint64) ([]string, error) { func loadFileTag() string { // Load file tag from env key := "retention" - value := env.String("RETENTION") + value := os.Getenv("RETENTION") if value == "" { value = "default" } From 7c9b56798b62812d747ff046dc95fada6a50c19c Mon Sep 17 00:00:00 2001 From: sylenien Date: Thu, 30 Jun 2022 16:32:13 +0200 Subject: [PATCH 3/4] fix(ui): fix jira issues --- .../components/Session_/Issues/IssueForm.js | 32 ++++++++++++------- frontend/app/duck/assignments.js | 7 ++-- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/frontend/app/components/Session_/Issues/IssueForm.js b/frontend/app/components/Session_/Issues/IssueForm.js index c0efe562a..991a227ec 100644 --- a/frontend/app/components/Session_/Issues/IssueForm.js +++ b/frontend/app/components/Session_/Issues/IssueForm.js @@ -14,7 +14,7 @@ const SelectedValue = ({ icon, text }) => { ) } - + class IssueForm extends React.PureComponent { componentDidMount() { const { projects, issueTypes } = this.props; @@ -37,7 +37,7 @@ class IssueForm extends React.PureComponent { const { sessionId, addActivity } = this.props; const { instance } = this.props; - addActivity(sessionId, instance).then(() => { + addActivity(sessionId, instance.toJS()).then(() => { const { errors } = this.props; if (!errors || errors.length === 0) { this.props.init({projectId: instance.projectId}); @@ -47,20 +47,23 @@ class IssueForm extends React.PureComponent { }); } - write = ({ target: { name, value } }) => this.props.edit({ [ name ]: value }); - writeOption = (e, { name, value }) => this.props.edit({ [ name ]: value }); + write = (e) => { + const { target: { name, value } } = e; + this.props.edit({ [ name ]: value }) + }; + writeOption = ({ name, value }) => this.props.edit({ [ name ]: value }); render() { const { creating, projects, users, issueTypes, instance, closeHandler, metaLoading } = this.props; - const projectOptions = projects.map(({name, id}) => ({text: name, value: id })).toArray(); - const userOptions = users.map(({name, id}) => ({text: name, value: id })).toArray(); + const projectOptions = projects.map(({name, id}) => ({label: name, value: id })).toArray(); + const userOptions = users.map(({name, id}) => ({label: name, value: id })).toArray(); const issueTypeOptions = issueTypes.map(({name, id, iconUrl, color }) => { - return {text: name, value: id, iconUrl, color } - }).toArray(); - - const selectedIssueType = issueTypes.filter(issue => issue.id == instance.issueType).first(); + return { label: name, value: id, iconUrl, color } + }); + const selectedIssueType = issueTypes.filter(issue => issue.id == instance.issueType)[0]; + return (
@@ -134,11 +137,16 @@ class IssueForm extends React.PureComponent { variant="primary" disabled={ !instance.validate() } className="float-left mr-2" - >{'Create'} + type="submit" + > + {'Create'} + + > + {'Cancel'} + ); } diff --git a/frontend/app/duck/assignments.js b/frontend/app/duck/assignments.js index 3a73c2e66..ed6b9834a 100644 --- a/frontend/app/duck/assignments.js +++ b/frontend/app/duck/assignments.js @@ -48,7 +48,7 @@ const reducer = (state = initialState, action = {}) => { case FETCH_ASSIGNMENT.SUCCESS: return state.set('activeIssue', Assignment({ ...action.data, users})); case FETCH_META.SUCCESS: - issueTypes = List(action.data.issueTypes).map(IssuesType); + issueTypes = action.data.issueTypes var issueTypeIcons = {} issueTypes.forEach(iss => { issueTypeIcons[iss.id] = iss.iconUrl @@ -109,9 +109,10 @@ export function fetchAssigment(sessionId, id) { } export function addActivity(sessionId, params) { + const data = { ...params, assignee: params.assignee.value, issueType: params.issueType.value } return { types: ADD_ACTIVITY.toArray(), - call: client => client.post(`/sessions2/${ sessionId }/assign/projects/${params.projectId}`, params.toCreate()), + call: client => client.post(`/sessions2/${ sessionId }/assign/projects/${params.projectId.value}`, data), } } @@ -120,4 +121,4 @@ export function addMessage(sessionId, assignmentId, params) { types: ADD_MESSAGE.toArray(), call: client => client.post(`/sessions2/${ sessionId }/assign/${ assignmentId }/comment`, params), } -} \ No newline at end of file +} From f51da445f99b819dcbe79ddc806c22c0c75e0b69 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Thu, 30 Jun 2022 16:45:32 +0200 Subject: [PATCH 4/4] ci(helm): use kubectl for deployment Signed-off-by: rjshrjndrn --- .github/workflows/frontend.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/frontend.yaml b/.github/workflows/frontend.yaml index 53f9f0c03..0a41779b0 100644 --- a/.github/workflows/frontend.yaml +++ b/.github/workflows/frontend.yaml @@ -91,7 +91,7 @@ jobs: cat /tmp/image_override.yaml # Deploy command - helm upgrade --install openreplay -n app openreplay -f vars.yaml -f /tmp/image_override.yaml --atomic --set skipMigration=true --no-hooks + helm template openreplay -n app openreplay -f vars.yaml -f /tmp/image_override.yaml --atomic --set skipMigration=true --no-hooks | kubectl apply -f - env: DOCKER_REPO: ${{ secrets.OSS_REGISTRY_URL }} IMAGE_TAG: ${{ github.sha }} @@ -152,7 +152,7 @@ jobs: cat /tmp/image_override.yaml # Deploy command - helm upgrade --install openreplay -n app openreplay -f vars.yaml -f /tmp/image_override.yaml --set skipMigration=true --no-hooks + helm template openreplay -n app openreplay -f vars.yaml -f /tmp/image_override.yaml --set skipMigration=true --no-hooks | kubectl apply -f - env: DOCKER_REPO: ${{ secrets.EE_REGISTRY_URL }} # We're not passing -ee flag, because helm will add that.