Skip to content

Commit ab6f99c

Browse files
committed
Merge branch 'main' into cli-use-config-url
2 parents cd15af8 + cd64e98 commit ab6f99c

File tree

69 files changed

+1862
-601
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+1862
-601
lines changed

Makefile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -586,6 +586,7 @@ provisionerd/proto/provisionerd.pb.go: provisionerd/proto/provisionerd.proto
586586

587587
site/src/api/typesGenerated.ts: $(wildcard scripts/apitypings/*) $(shell find ./codersdk $(FIND_EXCLUSIONS) -type f -name '*.go')
588588
go run ./scripts/apitypings/ > $@
589+
./scripts/pnpm_install.sh
589590
pnpm exec prettier --write "$@"
590591

591592
site/e2e/provisionerGenerated.ts: provisionerd/proto/provisionerd.pb.go provisionersdk/proto/provisioner.pb.go
@@ -595,6 +596,7 @@ site/e2e/provisionerGenerated.ts: provisionerd/proto/provisionerd.pb.go provisio
595596

596597
site/src/theme/icons.json: $(wildcard scripts/gensite/*) $(wildcard site/static/icon/*)
597598
go run ./scripts/gensite/ -icons "$@"
599+
./scripts/pnpm_install.sh
598600
pnpm exec prettier --write "$@"
599601

600602
examples/examples.gen.json: scripts/examplegen/main.go examples/examples.go $(shell find ./examples/templates)
@@ -605,18 +607,22 @@ coderd/rbac/object_gen.go: scripts/rbacgen/main.go coderd/rbac/object.go
605607

606608
docs/admin/prometheus.md: scripts/metricsdocgen/main.go scripts/metricsdocgen/metrics
607609
go run scripts/metricsdocgen/main.go
610+
./scripts/pnpm_install.sh
608611
pnpm exec prettier --write ./docs/admin/prometheus.md
609612

610613
docs/cli.md: scripts/clidocgen/main.go examples/examples.gen.json $(GO_SRC_FILES)
611614
CI=true BASE_PATH="." go run ./scripts/clidocgen
615+
./scripts/pnpm_install.sh
612616
pnpm exec prettier --write ./docs/cli.md ./docs/cli/*.md ./docs/manifest.json
613617

614618
docs/admin/audit-logs.md: coderd/database/querier.go scripts/auditdocgen/main.go enterprise/audit/table.go coderd/rbac/object_gen.go
615619
go run scripts/auditdocgen/main.go
620+
./scripts/pnpm_install.sh
616621
pnpm exec prettier --write ./docs/admin/audit-logs.md
617622

618623
coderd/apidoc/swagger.json: $(shell find ./scripts/apidocgen $(FIND_EXCLUSIONS) -type f) $(wildcard coderd/*.go) $(wildcard enterprise/coderd/*.go) $(wildcard codersdk/*.go) $(wildcard enterprise/wsproxy/wsproxysdk/*.go) $(DB_GEN_FILES) .swaggo docs/manifest.json coderd/rbac/object_gen.go
619624
./scripts/apidocgen/generate.sh
625+
./scripts/pnpm_install.sh
620626
pnpm exec prettier --write ./docs/api ./docs/manifest.json ./coderd/apidoc/swagger.json
621627

622628
update-golden-files: \

coderd/coderd.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,7 @@ func New(options *Options) *API {
489489
func(context.Context) (tailnet.MultiAgentConn, error) {
490490
return (*api.TailnetCoordinator.Load()).ServeMultiAgent(uuid.New()), nil
491491
},
492+
options.DeploymentValues.DERP.Config.BlockDirect.Value(),
492493
api.TracerProvider,
493494
)
494495
if err != nil {

coderd/database/dbpurge/dbpurge_test.go

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ func containsAgentLog(daemons []database.WorkspaceAgentLog, output string) bool
202202
func TestDeleteOldProvisionerDaemons(t *testing.T) {
203203
t.Parallel()
204204

205-
db, _ := dbtestutil.NewDB(t)
205+
db, _ := dbtestutil.NewDB(t, dbtestutil.WithDumpOnFailure())
206206
defaultOrg := dbgen.Organization(t, db, database.Organization{})
207207
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true})
208208

@@ -214,11 +214,12 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
214214
// given
215215
_, err := db.UpsertProvisionerDaemon(ctx, database.UpsertProvisionerDaemonParams{
216216
// Provisioner daemon created 14 days ago, and checked in just before 7 days deadline.
217-
Name: "external-0",
218-
Provisioners: []database.ProvisionerType{"echo"},
219-
Tags: database.StringMap{provisionersdk.TagScope: provisionersdk.ScopeOrganization},
220-
CreatedAt: now.Add(-14 * 24 * time.Hour),
221-
LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-7 * 24 * time.Hour).Add(time.Minute)},
217+
Name: "external-0",
218+
Provisioners: []database.ProvisionerType{"echo"},
219+
Tags: database.StringMap{provisionersdk.TagScope: provisionersdk.ScopeOrganization},
220+
CreatedAt: now.AddDate(0, 0, -14),
221+
// Note: adding an hour and a minute to account for DST variations
222+
LastSeenAt: sql.NullTime{Valid: true, Time: now.AddDate(0, 0, -7).Add(61 * time.Minute)},
222223
Version: "1.0.0",
223224
APIVersion: proto.CurrentVersion.String(),
224225
OrganizationID: defaultOrg.ID,
@@ -229,8 +230,8 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
229230
Name: "external-1",
230231
Provisioners: []database.ProvisionerType{"echo"},
231232
Tags: database.StringMap{provisionersdk.TagScope: provisionersdk.ScopeOrganization},
232-
CreatedAt: now.Add(-8 * 24 * time.Hour),
233-
LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-8 * 24 * time.Hour).Add(time.Hour)},
233+
CreatedAt: now.AddDate(0, 0, -8),
234+
LastSeenAt: sql.NullTime{Valid: true, Time: now.AddDate(0, 0, -8).Add(time.Hour)},
234235
Version: "1.0.0",
235236
APIVersion: proto.CurrentVersion.String(),
236237
OrganizationID: defaultOrg.ID,
@@ -244,7 +245,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
244245
provisionersdk.TagScope: provisionersdk.ScopeUser,
245246
provisionersdk.TagOwner: uuid.NewString(),
246247
},
247-
CreatedAt: now.Add(-9 * 24 * time.Hour),
248+
CreatedAt: now.AddDate(0, 0, -9),
248249
Version: "1.0.0",
249250
APIVersion: proto.CurrentVersion.String(),
250251
OrganizationID: defaultOrg.ID,
@@ -258,8 +259,8 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
258259
provisionersdk.TagScope: provisionersdk.ScopeUser,
259260
provisionersdk.TagOwner: uuid.NewString(),
260261
},
261-
CreatedAt: now.Add(-6 * 24 * time.Hour),
262-
LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-6 * 24 * time.Hour)},
262+
CreatedAt: now.AddDate(0, 0, -6),
263+
LastSeenAt: sql.NullTime{Valid: true, Time: now.AddDate(0, 0, -6)},
263264
Version: "1.0.0",
264265
APIVersion: proto.CurrentVersion.String(),
265266
OrganizationID: defaultOrg.ID,
@@ -276,11 +277,18 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
276277
if err != nil {
277278
return false
278279
}
280+
281+
daemonNames := make([]string, 0, len(daemons))
282+
for _, d := range daemons {
283+
daemonNames = append(daemonNames, d.Name)
284+
}
285+
t.Logf("found %d daemons: %v", len(daemons), daemonNames)
286+
279287
return containsProvisionerDaemon(daemons, "external-0") &&
280288
!containsProvisionerDaemon(daemons, "external-1") &&
281289
!containsProvisionerDaemon(daemons, "alice-provisioner") &&
282290
containsProvisionerDaemon(daemons, "bob-provisioner")
283-
}, testutil.WaitShort, testutil.IntervalFast)
291+
}, testutil.WaitShort, testutil.IntervalSlow)
284292
}
285293

286294
func containsProvisionerDaemon(daemons []database.ProvisionerDaemon, name string) bool {

coderd/files_test.go

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"bytes"
66
"context"
77
"net/http"
8+
"os"
9+
"path/filepath"
810
"testing"
911

1012
"github.com/google/uuid"
@@ -13,7 +15,6 @@ import (
1315
"github.com/coder/coder/v2/coderd"
1416
"github.com/coder/coder/v2/coderd/coderdtest"
1517
"github.com/coder/coder/v2/codersdk"
16-
"github.com/coder/coder/v2/provisioner/echo"
1718
"github.com/coder/coder/v2/testutil"
1819
)
1920

@@ -83,16 +84,20 @@ func TestDownload(t *testing.T) {
8384
// given
8485
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
8586
defer cancel()
87+
tarball, err := os.ReadFile(filepath.Join("testdata", "test.tar"))
88+
require.NoError(t, err)
8689

8790
// when
88-
resp, err := client.Upload(ctx, codersdk.ContentTypeTar, bytes.NewReader(make([]byte, 1024)))
91+
resp, err := client.Upload(ctx, codersdk.ContentTypeTar, bytes.NewReader(tarball))
8992
require.NoError(t, err)
9093
data, contentType, err := client.Download(ctx, resp.ID)
9194
require.NoError(t, err)
9295

9396
// then
94-
require.Len(t, data, 1024)
97+
require.Len(t, data, len(tarball))
9598
require.Equal(t, codersdk.ContentTypeTar, contentType)
99+
require.Equal(t, tarball, data)
100+
assertSampleTarFile(t, data)
96101
})
97102

98103
t.Run("InsertZip_DownloadTar", func(t *testing.T) {
@@ -101,14 +106,7 @@ func TestDownload(t *testing.T) {
101106
_ = coderdtest.CreateFirstUser(t, client)
102107

103108
// given
104-
tarball, err := echo.Tar(&echo.Responses{
105-
Parse: echo.ParseComplete,
106-
ProvisionApply: echo.ApplyComplete,
107-
})
108-
require.NoError(t, err)
109-
110-
tarReader := tar.NewReader(bytes.NewReader(tarball))
111-
zipContent, err := coderd.CreateZipFromTar(tarReader)
109+
zipContent, err := os.ReadFile(filepath.Join("testdata", "test.zip"))
112110
require.NoError(t, err)
113111

114112
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
@@ -122,7 +120,10 @@ func TestDownload(t *testing.T) {
122120

123121
// then
124122
require.Equal(t, codersdk.ContentTypeTar, contentType)
125-
require.Equal(t, tarball, data)
123+
124+
// Note: creating a zip from a tar will result in some loss of information
125+
// as zip files do not store UNIX user:group data.
126+
assertSampleTarFile(t, data)
126127
})
127128

128129
t.Run("InsertTar_DownloadZip", func(t *testing.T) {
@@ -131,10 +132,7 @@ func TestDownload(t *testing.T) {
131132
_ = coderdtest.CreateFirstUser(t, client)
132133

133134
// given
134-
tarball, err := echo.Tar(&echo.Responses{
135-
Parse: echo.ParseComplete,
136-
ProvisionApply: echo.ApplyComplete,
137-
})
135+
tarball, err := os.ReadFile(filepath.Join("testdata", "test.tar"))
138136
require.NoError(t, err)
139137

140138
tarReader := tar.NewReader(bytes.NewReader(tarball))
@@ -153,5 +151,6 @@ func TestDownload(t *testing.T) {
153151
// then
154152
require.Equal(t, codersdk.ContentTypeZip, contentType)
155153
require.Equal(t, expectedZip, data)
154+
assertSampleZipFile(t, data)
156155
})
157156
}

coderd/fileszip.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,13 @@ func processFileInZipArchive(file *zip.File, tarWriter *tar.Writer) error {
3939
defer fileReader.Close()
4040

4141
err = tarWriter.WriteHeader(&tar.Header{
42-
Name: file.Name,
43-
Size: file.FileInfo().Size(),
44-
Mode: 0o644,
42+
Name: file.Name,
43+
Size: file.FileInfo().Size(),
44+
Mode: int64(file.Mode()),
45+
ModTime: file.Modified,
46+
// Note: Zip archives do not store ownership information.
47+
Uid: 1000,
48+
Gid: 1000,
4549
})
4650
if err != nil {
4751
return err

0 commit comments

Comments
 (0)