Skip to content

Commit a5dc9cd

Browse files
committed
Merge pull request #18 from mocbotau/daggerise
feat: daggerise + use helmfile for pipelines
2 parents c100dce + fb314ba commit a5dc9cd

11 files changed

Lines changed: 266 additions & 105 deletions

File tree

.dagger/.gitattributes

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/dagger.gen.go linguist-generated
2+
/internal/dagger/** linguist-generated
3+
/internal/querybuilder/** linguist-generated
4+
/internal/telemetry/** linguist-generated

.dagger/.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/dagger.gen.go
2+
/internal/dagger
3+
/internal/querybuilder
4+
/internal/telemetry
5+
/.env

.dagger/go.mod

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
module dagger/scuffbot
2+
3+
go 1.25.5
4+
5+
require (
6+
github.com/99designs/gqlgen v0.17.81
7+
github.com/Khan/genqlient v0.8.1
8+
github.com/vektah/gqlparser/v2 v2.5.30
9+
go.opentelemetry.io/otel v1.38.0
10+
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0
11+
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0
12+
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0
13+
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0
14+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0
15+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0
16+
go.opentelemetry.io/otel/log v0.14.0
17+
go.opentelemetry.io/otel/metric v1.38.0
18+
go.opentelemetry.io/otel/sdk v1.38.0
19+
go.opentelemetry.io/otel/sdk/log v0.14.0
20+
go.opentelemetry.io/otel/sdk/metric v1.38.0
21+
go.opentelemetry.io/otel/trace v1.38.0
22+
go.opentelemetry.io/proto/otlp v1.8.0
23+
golang.org/x/sync v0.17.0
24+
google.golang.org/grpc v1.76.0
25+
)
26+
27+
require (
28+
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
29+
github.com/go-logr/logr v1.4.3 // indirect
30+
github.com/go-logr/stdr v1.2.2 // indirect
31+
github.com/google/uuid v1.6.0 // indirect
32+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect
33+
github.com/sosodev/duration v1.3.1 // indirect
34+
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
35+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect
36+
golang.org/x/net v0.44.0 // indirect
37+
golang.org/x/sys v0.36.0 // indirect
38+
golang.org/x/text v0.29.0 // indirect
39+
google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect
40+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect
41+
google.golang.org/protobuf v1.36.9 // indirect
42+
)
43+
44+
replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0
45+
46+
replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0
47+
48+
replace go.opentelemetry.io/otel/log => go.opentelemetry.io/otel/log v0.14.0
49+
50+
replace go.opentelemetry.io/otel/sdk/log => go.opentelemetry.io/otel/sdk/log v0.14.0

.dagger/go.sum

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
github.com/99designs/gqlgen v0.17.81 h1:kCkN/xVyRb5rEQpuwOHRTYq83i0IuTQg9vdIiwEerTs=
2+
github.com/99designs/gqlgen v0.17.81/go.mod h1:vgNcZlLwemsUhYim4dC1pvFP5FX0pr2Y+uYUoHFb1ig=
3+
github.com/Khan/genqlient v0.8.1 h1:wtOCc8N9rNynRLXN3k3CnfzheCUNKBcvXmVv5zt6WCs=
4+
github.com/Khan/genqlient v0.8.1/go.mod h1:R2G6DzjBvCbhjsEajfRjbWdVglSH/73kSivC9TLWVjU=
5+
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ=
6+
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
7+
github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM=
8+
github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
9+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
10+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
11+
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
12+
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
13+
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
14+
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
15+
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
16+
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
17+
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
18+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
19+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
20+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
21+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
22+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU=
23+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs=
24+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
25+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
26+
github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
27+
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
28+
github.com/sosodev/duration v1.3.1 h1:qtHBDMQ6lvMQsL15g4aopM4HEfOaYuhWBw3NPTtlqq4=
29+
github.com/sosodev/duration v1.3.1/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg=
30+
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
31+
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
32+
github.com/vektah/gqlparser/v2 v2.5.30 h1:EqLwGAFLIzt1wpx1IPpY67DwUujF1OfzgEyDsLrN6kE=
33+
github.com/vektah/gqlparser/v2 v2.5.30/go.mod h1:D1/VCZtV3LPnQrcPBeR/q5jkSQIPti0uYCP/RI0gIeo=
34+
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
35+
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
36+
go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8=
37+
go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM=
38+
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 h1:OMqPldHt79PqWKOMYIAQs3CxAi7RLgPxwfFSwr4ZxtM=
39+
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0/go.mod h1:1biG4qiqTxKiUCtoWDPpL3fB3KxVwCiGw81j3nKMuHE=
40+
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0 h1:QQqYw3lkrzwVsoEX0w//EhH/TCnpRdEenKBOOEIMjWc=
41+
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.14.0/go.mod h1:gSVQcr17jk2ig4jqJ2DX30IdWH251JcNAecvrqTxH1s=
42+
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8=
43+
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw=
44+
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk=
45+
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg=
46+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 h1:GqRJVj7UmLjCVyVJ3ZFLdPRmhDUp2zFmQe3RHIOsw24=
47+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0/go.mod h1:ri3aaHSmCTVYu2AWv44YMauwAQc0aqI9gHKIcSbI1pU=
48+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 h1:lwI4Dc5leUqENgGuQImwLo4WnuXFPetmPpkLi2IrX54=
49+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0/go.mod h1:Kz/oCE7z5wuyhPxsXDuaPteSWqjSBD5YaSdbxZYGbGk=
50+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0 h1:aTL7F04bJHUlztTsNGJ2l+6he8c+y/b//eR0jjjemT4=
51+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.38.0/go.mod h1:kldtb7jDTeol0l3ewcmd8SDvx3EmIE7lyvqbasU3QC4=
52+
go.opentelemetry.io/otel/log v0.14.0 h1:2rzJ+pOAZ8qmZ3DDHg73NEKzSZkhkGIua9gXtxNGgrM=
53+
go.opentelemetry.io/otel/log v0.14.0/go.mod h1:5jRG92fEAgx0SU/vFPxmJvhIuDU9E1SUnEQrMlJpOno=
54+
go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA=
55+
go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI=
56+
go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E=
57+
go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg=
58+
go.opentelemetry.io/otel/sdk/log v0.14.0 h1:JU/U3O7N6fsAXj0+CXz21Czg532dW2V4gG1HE/e8Zrg=
59+
go.opentelemetry.io/otel/sdk/log v0.14.0/go.mod h1:imQvII+0ZylXfKU7/wtOND8Hn4OpT3YUoIgqJVksUkM=
60+
go.opentelemetry.io/otel/sdk/log/logtest v0.14.0 h1:Ijbtz+JKXl8T2MngiwqBlPaHqc4YCaP/i13Qrow6gAM=
61+
go.opentelemetry.io/otel/sdk/log/logtest v0.14.0/go.mod h1:dCU8aEL6q+L9cYTqcVOk8rM9Tp8WdnHOPLiBgp0SGOA=
62+
go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM=
63+
go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA=
64+
go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE=
65+
go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs=
66+
go.opentelemetry.io/proto/otlp v1.8.0 h1:fRAZQDcAFHySxpJ1TwlA1cJ4tvcrw7nXl9xWWC8N5CE=
67+
go.opentelemetry.io/proto/otlp v1.8.0/go.mod h1:tIeYOeNBU4cvmPqpaji1P+KbB4Oloai8wN4rWzRrFF0=
68+
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
69+
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
70+
golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I=
71+
golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY=
72+
golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug=
73+
golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
74+
golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k=
75+
golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
76+
golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk=
77+
golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4=
78+
gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
79+
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
80+
google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY=
81+
google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE=
82+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE=
83+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc=
84+
google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A=
85+
google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c=
86+
google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw=
87+
google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
88+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
89+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

.dagger/main.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package main
2+
3+
import (
4+
"context"
5+
6+
"dagger/scuffbot/internal/dagger"
7+
)
8+
9+
const (
10+
repoName = "scuffbot"
11+
)
12+
13+
type Scuffbot struct {
14+
// Source code directory
15+
Source *dagger.Directory
16+
// +private
17+
InfisicalClientSecret *dagger.Secret
18+
}
19+
20+
func New(
21+
// Source code directory
22+
// +defaultPath="."
23+
source *dagger.Directory,
24+
infisicalClientSecret *dagger.Secret,
25+
) *Scuffbot {
26+
return &Scuffbot{
27+
Source: source,
28+
InfisicalClientSecret: infisicalClientSecret,
29+
}
30+
}
31+
32+
// BuildAndPush builds and pushes the Docker image to the container registry
33+
func (m *Scuffbot) BuildAndPush(
34+
ctx context.Context,
35+
// Environment to build image for
36+
// +default="staging"
37+
env string,
38+
) (string, error) {
39+
docker := dag.Docker(m.Source, m.InfisicalClientSecret, repoName, dagger.DockerOpts{
40+
Environment: env,
41+
})
42+
43+
return docker.Build().Publish(ctx)
44+
}

.dockerignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,5 @@ docker-compose.yaml
2222

2323
.python-version
2424
*.md
25+
26+
.dagger

.github/workflows/deploy.yaml

Lines changed: 7 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
name: Build, push, and deploy
1+
name: Deploy
22

33
on:
44
pull_request:
5-
branches:
6-
- main
75
push:
8-
branches:
9-
- main
6+
branches: [main]
107
workflow_dispatch:
118
inputs:
129
env:
@@ -19,88 +16,9 @@ on:
1916
- prod
2017

2118
jobs:
22-
build:
23-
name: Build and push to Docker Hub
24-
runs-on: arc-runner-set
25-
outputs:
26-
commit-sha: ${{ steps.extractor.outputs.short_sha }}
27-
environment: ${{ steps.set-environment.outputs.env }}
28-
repo-name: ${{ steps.extractor.outputs.repo_name }}
29-
steps:
30-
- name: Determine Environment
31-
id: set-environment
32-
run: |
33-
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
34-
echo "env=${{ github.event.inputs.env }}" >> $GITHUB_OUTPUT
35-
elif [[ "${{ github.event_name }}" == "pull_request" ]]; then
36-
echo "env=staging" >> $GITHUB_OUTPUT
37-
elif [[ "${{ github.event_name }}" == "push" ]]; then
38-
echo "env=prod" >> $GITHUB_OUTPUT
39-
else
40-
echo "Failed to determine environment"
41-
exit 1
42-
fi
43-
env:
44-
GITHUB_EVENT_NAME: ${{ github.event_name }}
45-
46-
- name: Login to Docker Hub
47-
uses: docker/login-action@v3
48-
with:
49-
username: ${{ secrets.ORG_DOCKERHUB_USERNAME }}
50-
password: ${{ secrets.ORG_DOCKERHUB_TOKEN }}
51-
52-
- name: Extract repository name and commit SHA
53-
id: extractor
54-
run: |
55-
echo "${{ github.repository }}" | sed -E "s|^.*/(.*)$|repo_name=\1|" | tr "[:upper:]" "[:lower:]" >> $GITHUB_OUTPUT
56-
echo "${{ github.sha }}" | sed -E "s|^(.{7}).*$|short_sha=\1|" >> $GITHUB_OUTPUT
57-
58-
- name: Build and push to ${{ steps.set-environment.outputs.env }}
59-
uses: docker/build-push-action@v6
60-
with:
61-
push: true
62-
tags: |
63-
${{ secrets.ORG_DOCKERHUB_USERNAME }}/${{ secrets.ORG_DOCKERHUB_REPO }}:${{ steps.extractor.outputs.repo_name }}-${{ steps.set-environment.outputs.env }}
64-
6519
deploy:
66-
name: Deploy to Kubernetes
67-
needs: build
68-
runs-on: ubuntu-latest
69-
steps:
70-
- name: Checkout infrastructure config
71-
uses: actions/checkout@v4
72-
with:
73-
sparse-checkout: infra
74-
75-
- name: Login to Docker Hub
76-
uses: docker/login-action@v3
77-
with:
78-
username: ${{ secrets.ORG_DOCKERHUB_USERNAME }}
79-
password: ${{ secrets.ORG_DOCKERHUB_TOKEN }}
80-
81-
- name: Set kube context
82-
uses: azure/k8s-set-context@v4
83-
with:
84-
method: service-account
85-
k8s-url: https://kube.masterofcubesau.com:6443
86-
k8s-secret: ${{ secrets.ORG_K3S_AUTH_TOKEN }}
87-
88-
- name: Add internal chartmuseum
89-
run: |
90-
helm repo add chartmuseum https://chartmuseum.masterofcubesau.com \
91-
--username ${{ secrets.ORG_CHARTMUSEUM_USER }} \
92-
--password ${{ secrets.ORG_CHARTMUSEUM_PASS }}
93-
94-
- name: Deploy application to ${{ needs.build.outputs.environment }}
95-
env:
96-
ENVIRONMENT: ${{ needs.build.outputs.environment }}
97-
REPO_NAME: ${{ needs.build.outputs.repo-name }}
98-
COMMIT_SHA: ${{ needs.build.outputs.commit-sha }}
99-
DOCKERHUB_USERNAME: ${{ secrets.ORG_DOCKERHUB_USERNAME }}
100-
DOCKERHUB_REPO: ${{ secrets.ORG_DOCKERHUB_REPO }}
101-
BOT_TOKEN: ${{ needs.build.outputs.environment == 'prod' && secrets.BOT_TOKEN_PROD || secrets.BOT_TOKEN_STAGING }}
102-
run: |
103-
cat infra/values.yaml | envsubst | \
104-
helm upgrade --install "$REPO_NAME" chartmuseum/generic-app --version 0.1.1 \
105-
-f - --set-file scuffbotConfig=config.yaml \
106-
--namespace="$REPO_NAME-$ENVIRONMENT" --create-namespace --atomic --timeout=1m --cleanup-on-fail
20+
uses: mocbotau/infra-workflows/.github/workflows/generic-deploy.yaml@main
21+
with:
22+
event-name: ${{ github.event_name }}
23+
environment: ${{ github.event.inputs.env }}
24+
secrets: inherit

dagger.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"name": "Scuffbot",
3+
"engineVersion": "v0.19.8",
4+
"sdk": {
5+
"source": "go"
6+
},
7+
"dependencies": [
8+
{
9+
"name": "docker",
10+
"source": "https://github.com/mocbotau/infra-dagger-modules/modules/docker@main",
11+
"pin": "1796026f67576c4024c37937d6db12358e4d2e70"
12+
}
13+
],
14+
"source": ".dagger"
15+
}

helmfile.yaml.gotmpl

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
environments:
2+
staging:
3+
values:
4+
- environment: staging
5+
prod:
6+
values:
7+
- environment: prod
8+
9+
---
10+
repositories:
11+
- name: chartmuseum
12+
url: https://chartmuseum.masterofcubesau.com
13+
username: {{ requiredEnv "CHARTMUSEUM_USER" }}
14+
password: {{ requiredEnv "CHARTMUSEUM_PASS" }}
15+
16+
helmDefaults:
17+
atomic: true
18+
cleanupOnFail: true
19+
createNamespace: true
20+
timeout: 60
21+
wait: true
22+
waitForJobs: true
23+
24+
releases:
25+
- name: scuffbot
26+
chart: chartmuseum/generic-app
27+
version: 0.3.0
28+
namespace: scuffbot-{{ .Environment.Values.environment }}
29+
values:
30+
- infra/values.yaml.gotmpl
31+
set:
32+
- name: scuffbotConfig
33+
file: config.yaml

infra/values.yaml

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)