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. diff --git a/backend/cmd/assets/main.go b/backend/cmd/assets/main.go index 044fb848c..86eb4865f 100644 --- a/backend/cmd/assets/main.go +++ b/backend/cmd/assets/main.go @@ -24,14 +24,7 @@ func main() { cfg := config.New() - cacher := cacher.NewCacher( - cfg.AWSRegion, - cfg.S3BucketAssets, - cfg.AssetsOrigin, - cfg.AssetsSizeLimit, - cfg.AssetsRequestHeaders, - 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 365ecbfbe..752241e37 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" ) @@ -34,15 +35,8 @@ type cacher struct { requestHeaders map[string]string } -func NewCacher( - region string, - bucket string, - origin string, - sizeLimit int, - requestHeaders map[string]string, - 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") } @@ -52,18 +46,19 @@ func NewCacher( } 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, - requestHeaders: requestHeaders, + requestHeaders: cfg.AssetsRequestHeaders, } } 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" } 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 (