Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3d1ea08

Browse files
committed
Merge branch 'main' into turn
2 parents e0a8b17 + 6dedd0c commit 3d1ea08

Some content is hidden

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

57 files changed

+1198
-569
lines changed

.github/dependabot.yaml

+18
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ updates:
3232
timezone: "America/Chicago"
3333
commit-message:
3434
prefix: "chore"
35+
labels:
36+
- "dependencies"
37+
- "go"
3538

3639
- package-ecosystem: "npm"
3740
directory: "/site/"
@@ -50,3 +53,18 @@ updates:
5053
- dependency-name: "@types/node"
5154
update-types:
5255
- version-update:semver-major
56+
57+
- package-ecosystem: "terraform"
58+
directory: "/examples"
59+
schedule:
60+
interval: "weekly"
61+
time: "06:00"
62+
timezone: "America/Chicago"
63+
commit-message:
64+
prefix: "chore"
65+
labels:
66+
- "dependencies"
67+
- "terraform"
68+
ignore:
69+
# We likely want to update this ourselves.
70+
- dependency-name: "coder/coder"

.github/semantic.yaml

+8-12
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,22 @@ types:
2525
# A build of any kind.
2626
- build
2727

28-
# A RELEASED fix that will NOT be back-ported. The originating issue may have
29-
# been discovered internally or externally to Coder.
30-
- fix
31-
32-
# Any code task that is ignored for changelog purposes. Examples include
33-
# devbin scripts and internal-only configurations.
28+
# Any code task that operates outside of CI, docs, or the product. Examples
29+
# include configurations, linters etc.
3430
- chore
3531

3632
# Any work performed on CI.
3733
- ci
38-
39-
# An UNRELEASED correction. For example, features are often built
40-
# incrementally and sometimes introduce minor flaws during a release cycle.
41-
# Corrections address those increments and flaws.
42-
- correct
34+
35+
- example
4336

4437
# Work that directly implements or supports the implementation of a feature.
4538
- feat
4639

47-
# A fix for a RELEASED bug (regression fix) that is intended for patch-release
40+
# A fix for either a released or unrelesed bug.
41+
- fix
42+
43+
# A fix for a released bug (regression fix) that is intended for patch-release
4844
# purposes.
4945
- hotfix
5046

.github/workflows/chromatic.yaml

+8-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,14 @@
66
# SEE: https://www.chromatic.com/docs/ci
77
name: chromatic
88

9-
# Chromatic works best with push events, not pull_request or other event types.
10-
on: push
9+
on:
10+
push:
11+
branches:
12+
- main
13+
tags:
14+
- "*"
15+
16+
pull_request:
1117

1218
jobs:
1319
deploy:

.github/workflows/coder.yaml

+14-12
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@ name: coder
22

33
on:
44
push:
5+
branches:
6+
- main
7+
tags:
8+
- "*"
9+
10+
pull_request:
511

612
workflow_dispatch:
713

@@ -174,7 +180,7 @@ jobs:
174180
-timeout=3m -count=$GOCOUNT -short -failfast
175181

176182
- name: Upload DataDog Trace
177-
if: (success() || failure()) && github.actor != 'dependabot[bot]' && github.repository_owner == 'coder'
183+
if: always() && github.actor != 'dependabot[bot]' && !github.event.pull_request.head.repo.fork
178184
env:
179185
DATADOG_API_KEY: ${{ secrets.DATADOG_API_KEY }}
180186
DD_DATABASE: fake
@@ -183,7 +189,7 @@ jobs:
183189
run: go run scripts/datadog-cireport/main.go gotests.xml
184190

185191
- uses: codecov/codecov-action@v3
186-
if: github.actor != 'dependabot[bot]' && github.repository_owner == 'coder'
192+
if: github.actor != 'dependabot[bot]' && !github.event.pull_request.head.repo.fork
187193
with:
188194
token: ${{ secrets.CODECOV_TOKEN }}
189195
files: ./gotests.coverage
@@ -261,15 +267,15 @@ jobs:
261267
-count=1 -parallel=2 -race -failfast
262268

263269
- name: Upload DataDog Trace
264-
if: (success() || failure()) && github.actor != 'dependabot[bot]' && github.repository_owner == 'coder'
270+
if: always() && github.actor != 'dependabot[bot]' && !github.event.pull_request.head.repo.fork
265271
env:
266272
DATADOG_API_KEY: ${{ secrets.DATADOG_API_KEY }}
267273
DD_DATABASE: postgresql
268274
GIT_COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
269275
run: go run scripts/datadog-cireport/main.go gotests.xml
270276

271277
- uses: codecov/codecov-action@v3
272-
if: github.actor != 'dependabot[bot]' && github.repository_owner == 'coder'
278+
if: github.actor != 'dependabot[bot]' && !github.event.pull_request.head.repo.fork
273279
with:
274280
token: ${{ secrets.CODECOV_TOKEN }}
275281
files: ./gotests.coverage
@@ -280,7 +286,7 @@ jobs:
280286
name: "deploy"
281287
runs-on: ubuntu-latest
282288
timeout-minutes: 20
283-
if: github.ref == 'refs/heads/main' && github.repository_owner == 'coder'
289+
if: github.ref == 'refs/heads/main' && !github.event.pull_request.head.repo.fork
284290
permissions:
285291
contents: read
286292
id-token: write
@@ -382,23 +388,19 @@ jobs:
382388
- name: Install node_modules
383389
run: ./scripts/yarn_install.sh
384390

385-
- name: Build frontend
386-
run: yarn build
387-
working-directory: site
388-
389391
- run: yarn test:coverage
390392
working-directory: site
391393

392394
- uses: codecov/codecov-action@v3
393-
if: github.actor != 'dependabot[bot]' && github.repository_owner == 'coder'
395+
if: github.actor != 'dependabot[bot]' && !github.event.pull_request.head.repo.fork
394396
with:
395397
token: ${{ secrets.CODECOV_TOKEN }}
396398
files: ./site/coverage/lcov.info
397399
flags: unittest-js
398400
fail_ci_if_error: true
399401

400402
- name: Upload DataDog Trace
401-
if: (success() || failure()) && github.actor != 'dependabot[bot]' && github.repository_owner == 'coder'
403+
if: always() && github.actor != 'dependabot[bot]' && !github.event.pull_request.head.repo.fork
402404
env:
403405
DATADOG_API_KEY: ${{ secrets.DATADOG_API_KEY }}
404406
DD_CATEGORY: unit
@@ -479,7 +481,7 @@ jobs:
479481
working-directory: site
480482

481483
- name: Upload DataDog Trace
482-
if: (success() || failure()) && github.actor != 'dependabot[bot]' && runner.os == 'Linux' && github.repository_owner == 'coder'
484+
if: always() && github.actor != 'dependabot[bot]' && runner.os == 'Linux' && !github.event.pull_request.head.repo.fork
483485
env:
484486
DATADOG_API_KEY: ${{ secrets.DATADOG_API_KEY }}
485487
DD_CATEGORY: e2e

.goreleaser.yaml

+6-4
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ before:
1717
builds:
1818
- id: coder-slim
1919
dir: cmd/coder
20-
ldflags: ["-s -w -X github.com/coder/coder/cli/buildinfo.tag={{ .Version }}"]
20+
ldflags:
21+
["-s -w -X github.com/coder/coder/cli/buildinfo.tag={{ .Version }}"]
2122
env: [CGO_ENABLED=0]
2223
goos: [darwin, linux, windows]
2324
goarch: [amd64]
@@ -28,8 +29,9 @@ builds:
2829
2930
- id: coder
3031
dir: cmd/coder
31-
flags: [-tags=embed]
32-
ldflags: ["-s -w -X github.com/coder/coder/cli/buildinfo.tag={{ .Version }}"]
32+
flags: ["-tags=embed"]
33+
ldflags:
34+
["-s -w -X github.com/coder/coder/cli/buildinfo.tag={{ .Version }}"]
3335
env: [CGO_ENABLED=0]
3436
goos: [darwin, linux, windows]
3537
goarch: [amd64, arm64]
@@ -61,4 +63,4 @@ release:
6163
ids: [coder, packages]
6264

6365
snapshot:
64-
name_template: '{{ .Version }}-devel+{{ .ShortCommit }}'
66+
name_template: "{{ .Version }}-devel+{{ .ShortCommit }}"

agent/agent_test.go

-3
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,9 @@ func TestAgent(t *testing.T) {
6363
t.Run("SessionTTY", func(t *testing.T) {
6464
t.Parallel()
6565
session := setupSSHSession(t)
66-
prompt := "$"
6766
command := "bash"
6867
if runtime.GOOS == "windows" {
6968
command = "cmd.exe"
70-
prompt = ">"
7169
}
7270
err := session.RequestPty("xterm", 128, 128, ssh.TerminalModes{})
7371
require.NoError(t, err)
@@ -78,7 +76,6 @@ func TestAgent(t *testing.T) {
7876
session.Stdin = ptty.Input()
7977
err = session.Start(command)
8078
require.NoError(t, err)
81-
ptty.ExpectMatch(prompt)
8279
ptty.WriteLine("echo test")
8380
ptty.ExpectMatch("test")
8481
ptty.WriteLine("exit")

cli/gitssh_test.go

+13-20
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import (
66
"net"
77
"sync/atomic"
88
"testing"
9-
"time"
109

1110
"github.com/gliderlabs/ssh"
11+
"github.com/google/uuid"
1212
"github.com/spf13/cobra"
1313
"github.com/stretchr/testify/require"
1414
gossh "golang.org/x/crypto/ssh"
@@ -24,34 +24,30 @@ import (
2424
func TestGitSSH(t *testing.T) {
2525
t.Parallel()
2626
t.Run("Dial", func(t *testing.T) {
27-
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
28-
defer cancel()
29-
instanceID := "instanceidentifier"
30-
certificates, metadataClient := coderdtest.NewAWSInstanceIdentity(t, instanceID)
31-
client := coderdtest.New(t, &coderdtest.Options{
32-
AWSInstanceIdentity: certificates,
33-
})
27+
client := coderdtest.New(t, nil)
3428
user := coderdtest.CreateFirstUser(t, client)
3529

3630
// get user public key
37-
keypair, err := client.GitSSHKey(ctx, codersdk.Me)
31+
keypair, err := client.GitSSHKey(context.Background(), codersdk.Me)
3832
require.NoError(t, err)
3933
publicKey, _, _, _, err := gossh.ParseAuthorizedKey([]byte(keypair.PublicKey))
4034
require.NoError(t, err)
4135

4236
// setup provisioner
37+
agentToken := uuid.NewString()
4338
coderdtest.NewProvisionerDaemon(t, client)
4439
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
45-
Parse: echo.ParseComplete,
40+
Parse: echo.ParseComplete,
41+
ProvisionDryRun: echo.ProvisionComplete,
4642
Provision: []*proto.Provision_Response{{
4743
Type: &proto.Provision_Response_Complete{
4844
Complete: &proto.Provision_Complete{
4945
Resources: []*proto.Resource{{
5046
Name: "somename",
5147
Type: "someinstance",
5248
Agents: []*proto.Agent{{
53-
Auth: &proto.Agent_InstanceId{
54-
InstanceId: instanceID,
49+
Auth: &proto.Agent_Token{
50+
Token: agentToken,
5551
},
5652
}},
5753
}},
@@ -65,23 +61,20 @@ func TestGitSSH(t *testing.T) {
6561
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)
6662

6763
// start workspace agent
68-
cmd, root := clitest.New(t, "agent", "--auth", "aws-instance-identity", "--url", client.URL.String())
64+
cmd, root := clitest.New(t, "agent", "--token", agentToken, "--url", client.URL.String())
6965
agentClient := &*client
7066
clitest.SetupConfig(t, agentClient, root)
7167
ctx, cancelFunc := context.WithCancel(context.Background())
7268
defer cancelFunc()
7369
go func() {
74-
// A linting error occurs for weakly typing the context value here,
75-
// but it seems reasonable for a one-off test.
76-
// nolint
77-
ctx = context.WithValue(ctx, "aws-client", metadataClient)
7870
err := cmd.ExecuteContext(ctx)
7971
require.NoError(t, err)
8072
}()
73+
8174
coderdtest.AwaitWorkspaceAgents(t, client, workspace.LatestBuild.ID)
82-
resources, err := client.WorkspaceResourcesByBuild(ctx, workspace.LatestBuild.ID)
75+
resources, err := client.WorkspaceResourcesByBuild(context.Background(), workspace.LatestBuild.ID)
8376
require.NoError(t, err)
84-
dialer, err := client.DialWorkspaceAgent(ctx, resources[0].Agents[0].ID, nil)
77+
dialer, err := client.DialWorkspaceAgent(context.Background(), resources[0].Agents[0].ID, nil)
8578
require.NoError(t, err)
8679
defer dialer.Close()
8780
_, err = dialer.Ping()
@@ -113,7 +106,7 @@ func TestGitSSH(t *testing.T) {
113106
cmd, root = clitest.New(t, "gitssh", "--global-config="+string(cfgDir), "--", fmt.Sprintf("-p%d", addr.Port), "-o", "StrictHostKeyChecking=no", "127.0.0.1")
114107
clitest.SetupConfig(t, agentClient, root)
115108

116-
err = cmd.ExecuteContext(ctx)
109+
err = cmd.ExecuteContext(context.Background())
117110
require.NoError(t, err)
118111
require.EqualValues(t, 1, inc)
119112
})

cli/start.go

+20-5
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ import (
3232
"github.com/coder/coder/coderd"
3333
"github.com/coder/coder/coderd/database"
3434
"github.com/coder/coder/coderd/database/databasefake"
35+
"github.com/coder/coder/coderd/devtunnel"
3536
"github.com/coder/coder/coderd/gitsshkey"
36-
"github.com/coder/coder/coderd/tunnel"
3737
"github.com/coder/coder/codersdk"
3838
"github.com/coder/coder/provisioner/terraform"
3939
"github.com/coder/coder/provisionerd"
@@ -106,7 +106,13 @@ func start() *cobra.Command {
106106
// If an access URL is specified, always skip tunneling.
107107
skipTunnel = true
108108
}
109-
var tunnelErr <-chan error
109+
110+
var (
111+
tunnelErrChan <-chan error
112+
ctxTunnel, closeTunnel = context.WithCancel(cmd.Context())
113+
)
114+
defer closeTunnel()
115+
110116
// If we're attempting to tunnel in dev-mode, the access URL
111117
// needs to be changed to use the tunnel.
112118
if dev && !skipTunnel {
@@ -125,13 +131,14 @@ func start() *cobra.Command {
125131
return err
126132
}
127133
if err == nil {
128-
accessURL, tunnelErr, err = tunnel.New(cmd.Context(), localURL.String())
134+
accessURL, tunnelErrChan, err = devtunnel.New(ctxTunnel, localURL)
129135
if err != nil {
130136
return xerrors.Errorf("create tunnel: %w", err)
131137
}
132138
}
133139
_, _ = fmt.Fprintln(cmd.ErrOrStderr())
134140
}
141+
135142
validator, err := idtoken.NewValidator(cmd.Context(), option.WithoutAuthentication())
136143
if err != nil {
137144
return err
@@ -264,8 +271,10 @@ func start() *cobra.Command {
264271
case <-cmd.Context().Done():
265272
closeCoderd()
266273
return cmd.Context().Err()
267-
case err := <-tunnelErr:
268-
return err
274+
case err := <-tunnelErrChan:
275+
if err != nil {
276+
return err
277+
}
269278
case err := <-errCh:
270279
closeCoderd()
271280
return err
@@ -329,6 +338,12 @@ func start() *cobra.Command {
329338
spin.Stop()
330339
}
331340

341+
if dev && !skipTunnel {
342+
_, _ = fmt.Fprintf(cmd.OutOrStdout(), cliui.Styles.Prompt.String()+"Waiting for dev tunnel to close...\n")
343+
closeTunnel()
344+
<-tunnelErrChan
345+
}
346+
332347
_, _ = fmt.Fprintf(cmd.OutOrStdout(), cliui.Styles.Prompt.String()+"Waiting for WebSocket connections to close...\n")
333348
shutdownConns()
334349
closeCoderd()

0 commit comments

Comments
 (0)