Skip to content

Commit 7e4ffa5

Browse files
authored
[WEB-4618] more config options (#221)
* WEB-4618 * err check * lint * lint * updated go version * updated go in docker image
1 parent 97f7e1d commit 7e4ffa5

File tree

7 files changed

+49
-17
lines changed

7 files changed

+49
-17
lines changed

Dockerfile.internal-platform

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM golang:1.22-alpine3.18 AS builder
1+
FROM golang:1.24-alpine3.21 AS builder
22

33
WORKDIR /src/bitrise-webhooks
44

@@ -12,7 +12,7 @@ COPY . .
1212
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /go/bin/bitrise-webhooks
1313

1414

15-
FROM alpine:3.20
15+
FROM alpine:3.21
1616

1717
RUN apk add -u ca-certificates && rm -rf /var/cache/apk/*
1818

bitrise.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
33
app:
44
envs:
55
- GO_PROJECT_PATH: github.com/bitrise-io/bitrise-webhooks
6-
- GO_VERSION: 1.21.2
6+
- GO_VERSION: 1.24.1
77
- PORT: "4000"
88
- IS_USE_GIN: "yes"
99
opts:

bitriseapi/bitriseapi.go

+2-7
Original file line numberDiff line numberDiff line change
@@ -146,17 +146,12 @@ func (triggerParams TriggerAPIParamsModel) Validate() error {
146146
}
147147

148148
// BuildTriggerURL ...
149-
func BuildTriggerURL(apiRootURL string, appSlug string) (*url.URL, error) {
150-
baseURL, err := url.Parse(apiRootURL)
151-
if err != nil {
152-
return nil, errors.Wrapf(err, "BuildTriggerURL: Failed to parse (%s)", apiRootURL)
153-
}
154-
149+
func BuildTriggerURL(apiRootURL *url.URL, appSlug string) (*url.URL, error) {
155150
pathURL, err := url.Parse(fmt.Sprintf("/app/%s/build/start.json", appSlug))
156151
if err != nil {
157152
return nil, errors.Wrap(err, "BuildTriggerURL: Failed to parse PATH")
158153
}
159-
return baseURL.ResolveReference(pathURL), nil
154+
return apiRootURL.ResolveReference(pathURL), nil
160155
}
161156

162157
// TriggerBuild ...

bitriseapi/bitriseapi_test.go

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,26 @@
11
package bitriseapi
22

33
import (
4+
"net/url"
45
"testing"
56

67
"github.com/stretchr/testify/require"
78
)
89

910
func TestBuildTriggerURL(t *testing.T) {
11+
rootURL, err := url.Parse("https://app.bitrise.io")
12+
require.NoError(t, err)
13+
1014
t.Log("Endpoint URL doesn't end with /")
1115
{
12-
url, err := BuildTriggerURL("https://app.bitrise.io", "a..............b")
16+
url, err := BuildTriggerURL(rootURL, "a..............b")
1317
require.NoError(t, err)
1418
require.Equal(t, "https://app.bitrise.io/app/a..............b/build/start.json", url.String())
1519
}
1620

1721
t.Log("Endpoint URL ends with /")
1822
{
19-
url, err := BuildTriggerURL("https://app.bitrise.io/", "a..............b")
23+
url, err := BuildTriggerURL(rootURL, "a..............b")
2024
require.NoError(t, err)
2125
require.Equal(t, "https://app.bitrise.io/app/a..............b/build/start.json", url.String())
2226
}
@@ -87,7 +91,9 @@ func Test_TriggerAPIParamsModel_Validate(t *testing.T) {
8791
}
8892

8993
func TestTriggerBuild(t *testing.T) {
90-
url, err := BuildTriggerURL("https://app.bitrise.io", "app-slug")
94+
rootURL, err := url.Parse("https://app.bitrise.io")
95+
require.NoError(t, err)
96+
url, err := BuildTriggerURL(rootURL, "app-slug")
9197
require.NoError(t, err)
9298

9399
t.Log("Empty trigger api params (invalid)")

config/config.go

+6
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ var (
1717

1818
// SendRequestToURL ...
1919
SendRequestToURL *url.URL
20+
21+
// BuildTriggerURL URL to trigger builds (Website)
22+
BuildTriggerURL *url.URL
23+
24+
// LogOnlyMode when set to true, no requests are sent to trigger builds
25+
LogOnlyMode = false
2026
)
2127

2228
// GetServerEnvMode ...

main.go

+27-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@ func main() {
1616
tracer.Start(tracer.WithServiceName("webhooks"))
1717
defer tracer.Stop()
1818
var (
19-
portFlag = flag.String("port", "", `Use port [$PORT]`)
20-
sendRequestToFlag = flag.String("send-request-to", "", `Send requests to this URL. If set, every request will be sent to this URL and not to bitrise.io. You can use this to debug/test, e.g. with http://requestb.in [$SEND_REQUEST_TO]`)
19+
portFlag = flag.String("port", "", `Use port [$PORT]`)
20+
sendRequestToFlag = flag.String("send-request-to", "", `Send requests to this URL. If set, every request will be sent to this URL and not to bitrise.io. You can use this to debug/test, e.g. with http://requestb.in [$SEND_REQUEST_TO]`)
21+
logOnlyModeFlag = flag.Bool("log-only-mode", false, `Only print log messages without triggering builds [$LOG_ONLY_MODE]`)
22+
buildTriggerURLFlag = flag.String("build-trigger-url", "", "URL to send build trigger requests to [$BUILD_TRIGGER_URL]")
2123
)
2224
flag.Parse()
2325

@@ -37,6 +39,22 @@ func main() {
3739
log.Printf(" (!) Send-Request-To specified, every request will be sent to: %s", config.SendRequestToURL)
3840
}
3941

42+
logOnlyMode := boolFlagOrEnv(logOnlyModeFlag, "LOG_ONLY_MODE")
43+
44+
buildTriggerURL := stringFlagOrEnv(buildTriggerURLFlag, "BUILD_TRIGGER_URL")
45+
if requestToStr == "" && buildTriggerURL == "" {
46+
log.Printf("No send-request-to or build-trigger-url specified, will only log requests")
47+
logOnlyMode = true
48+
} else if buildTriggerURL != "" {
49+
url, err := url.Parse(buildTriggerURL)
50+
if err != nil {
51+
log.Fatalf("Failed to parse build-trigger-url (%s) as a URL, error: %s", buildTriggerURL, err)
52+
}
53+
config.BuildTriggerURL = url
54+
}
55+
56+
config.LogOnlyMode = logOnlyMode
57+
4058
var (
4159
pubsubServiceAccountJSON = os.Getenv("METRICS_PUBSUB_SERVICE_ACCOUNT_JSON")
4260
pubsubTopicID = os.Getenv("METRICS_PUBSUB_TOPIC_ID")
@@ -73,3 +91,10 @@ func stringFlagOrEnv(flagValue *string, envKey string) string {
7391
}
7492
return os.Getenv(envKey)
7593
}
94+
95+
func boolFlagOrEnv(flagValue *bool, envKey string) bool {
96+
if flagValue != nil {
97+
return *flagValue
98+
}
99+
return os.Getenv(envKey) == "true"
100+
}

service/hook/endpoint.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ func triggerBuild(triggerURL *url.URL, apiToken string, triggerAPIParams bitrise
112112
logger := logging.WithContext(nil)
113113

114114
logger.Info(" ===> trigger build", zap.String("triggerURL", triggerURL.String()))
115-
isOnlyLog := !(config.SendRequestToURL != nil || config.GetServerEnvMode() == config.ServerEnvModeProd)
115+
isOnlyLog := config.LogOnlyMode
116116
if isOnlyLog {
117117
logger.Debug(" \\x1b[33;1m(debug) isOnlyLog: true\\x1b[0m")
118118
}
@@ -246,7 +246,7 @@ func (c *Client) HTTPHandler(w http.ResponseWriter, r *http.Request) {
246246
// Let's Trigger a build / some builds!
247247
triggerURL := config.SendRequestToURL
248248
if triggerURL == nil {
249-
u, err := bitriseapi.BuildTriggerURL("http://web-monolith.web-monolith:3000", appSlug)
249+
u, err := bitriseapi.BuildTriggerURL(config.BuildTriggerURL, appSlug)
250250
if err != nil {
251251
logger.Error(" [!] Exception: hookHandler: failed to create Build Trigger URL", zap.Error(err))
252252
respondWithErrorString(w, &hookProvider, fmt.Sprintf("Failed to create Build Trigger URL: %s", err))

0 commit comments

Comments
 (0)