Skip to content

Commit f392e36

Browse files
committed
roachtest: fix js install command (gpg)
We are seeing a `gpg: cannot open '/dev/tty': No such device or address` error from the new installation method we followed. Resolution seems to be nodejs/docker-node#922. In case we are running into an issue with machines being reused, we first check to see if we can install nodejs and npm before we add a nodesource key and deb repository (to prevent gpg: dearmoring failed: File exists) issues. (Copied from a reply to the bug report in the issue linked above) > For any script use you should anyway use --batch which disables the use of the tty as a side-effect. Fixes: #113673 Fixes: #113662 Fixes: #113659 Release note: None
1 parent 239099e commit f392e36

File tree

4 files changed

+114
-82
lines changed

4 files changed

+114
-82
lines changed

pkg/cmd/roachtest/tests/knex.go

+29-20
Original file line numberDiff line numberDiff line change
@@ -57,30 +57,39 @@ func registerKnex(r registry.Registry) {
5757
)
5858
require.NoError(t, err)
5959

60-
err = repeatRunE(
61-
ctx,
62-
t,
63-
c,
64-
node,
65-
"add nodesource key and deb repository",
66-
`
60+
// In case we are running into a state where machines are being reused, we first check to see if we
61+
// can use npm to reduce the potential of trying to add another nodesource key
62+
// (preventing gpg: dearmoring failed: File exists) errors.
63+
err = c.RunE(
64+
ctx, node, `sudo npm i -g npm`,
65+
)
66+
67+
if err != nil {
68+
err = repeatRunE(
69+
ctx,
70+
t,
71+
c,
72+
node,
73+
"add nodesource key and deb repository",
74+
`
6775
sudo apt-get update && \
6876
sudo apt-get install -y ca-certificates curl gnupg && \
6977
sudo mkdir -p /etc/apt/keyrings && \
70-
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
78+
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --batch --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
7179
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list`,
72-
)
73-
require.NoError(t, err)
74-
75-
err = repeatRunE(
76-
ctx, t, c, node, "install nodejs and npm", `sudo apt-get update && sudo apt-get -qq install nodejs`,
77-
)
78-
require.NoError(t, err)
79-
80-
err = repeatRunE(
81-
ctx, t, c, node, "update npm", `sudo npm i -g npm`,
82-
)
83-
require.NoError(t, err)
80+
)
81+
require.NoError(t, err)
82+
83+
err = repeatRunE(
84+
ctx, t, c, node, "install nodejs and npm", `sudo apt-get update && sudo apt-get -qq install nodejs`,
85+
)
86+
require.NoError(t, err)
87+
88+
err = repeatRunE(
89+
ctx, t, c, node, "update npm", `sudo npm i -g npm`,
90+
)
91+
require.NoError(t, err)
92+
}
8493

8594
err = repeatRunE(
8695
ctx, t, c, node, "install mocha", `sudo npm i -g mocha`,

pkg/cmd/roachtest/tests/nodejs_postgres.go

+29-20
Original file line numberDiff line numberDiff line change
@@ -67,30 +67,39 @@ func registerNodeJSPostgres(r registry.Registry) {
6767
err = alterZoneConfigAndClusterSettings(ctx, t, version, c, node[0])
6868
require.NoError(t, err)
6969

70-
err = repeatRunE(
71-
ctx,
72-
t,
73-
c,
74-
node,
75-
"add nodesource key and deb repository",
76-
`
70+
// In case we are running into a state where machines are being reused, we first check to see if we
71+
// can use npm to reduce the potential of trying to add another nodesource key
72+
// (preventing gpg: dearmoring failed: File exists) errors.
73+
err = c.RunE(
74+
ctx, node, `sudo npm i -g npm`,
75+
)
76+
77+
if err != nil {
78+
err = repeatRunE(
79+
ctx,
80+
t,
81+
c,
82+
node,
83+
"add nodesource key and deb repository",
84+
`
7785
sudo apt-get update && \
7886
sudo apt-get install -y ca-certificates curl gnupg && \
7987
sudo mkdir -p /etc/apt/keyrings && \
80-
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
88+
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --batch --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
8189
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list`,
82-
)
83-
require.NoError(t, err)
84-
85-
err = repeatRunE(
86-
ctx, t, c, node, "install nodejs and npm", `sudo apt-get update && sudo apt-get -qq install nodejs`,
87-
)
88-
require.NoError(t, err)
89-
90-
err = repeatRunE(
91-
ctx, t, c, node, "update npm", `sudo npm i -g npm`,
92-
)
93-
require.NoError(t, err)
90+
)
91+
require.NoError(t, err)
92+
93+
err = repeatRunE(
94+
ctx, t, c, node, "install nodejs and npm", `sudo apt-get update && sudo apt-get -qq install nodejs`,
95+
)
96+
require.NoError(t, err)
97+
98+
err = repeatRunE(
99+
ctx, t, c, node, "update npm", `sudo npm i -g npm`,
100+
)
101+
require.NoError(t, err)
102+
}
94103

95104
err = repeatRunE(
96105
ctx, t, c, node, "install yarn", `sudo npm i -g yarn`,

pkg/cmd/roachtest/tests/sequelize.go

+29-22
Original file line numberDiff line numberDiff line change
@@ -90,32 +90,39 @@ func registerSequelize(r registry.Registry) {
9090
t.Fatal(err)
9191
}
9292

93-
if err := repeatRunE(
94-
ctx,
95-
t,
96-
c,
97-
node,
98-
"add nodesource key and deb repository",
99-
`
93+
// In case we are running into a state where machines are being reused, we first check to see if we
94+
// can use npm to reduce the potential of trying to add another nodesource key
95+
// (preventing gpg: dearmoring failed: File exists) errors.
96+
if err := c.RunE(
97+
ctx, node, `sudo npm i -g npm`,
98+
); err != nil {
99+
if err := repeatRunE(
100+
ctx,
101+
t,
102+
c,
103+
node,
104+
"add nodesource key and deb repository",
105+
`
100106
sudo apt-get update && \
101107
sudo apt-get install -y ca-certificates curl gnupg && \
102108
sudo mkdir -p /etc/apt/keyrings && \
103-
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
109+
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --batch --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
104110
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list`,
105-
); err != nil {
106-
t.Fatal(err)
107-
}
108-
109-
if err := repeatRunE(
110-
ctx, t, c, node, "install nodejs and npm", `sudo apt-get update && sudo apt-get -qq install nodejs`,
111-
); err != nil {
112-
t.Fatal(err)
113-
}
114-
115-
if err := repeatRunE(
116-
ctx, t, c, node, "update npm", `sudo npm i -g npm`,
117-
); err != nil {
118-
t.Fatal(err)
111+
); err != nil {
112+
t.Fatal(err)
113+
}
114+
115+
if err := repeatRunE(
116+
ctx, t, c, node, "install nodejs and npm", `sudo apt-get update && sudo apt-get -qq install nodejs`,
117+
); err != nil {
118+
t.Fatal(err)
119+
}
120+
121+
if err := repeatRunE(
122+
ctx, t, c, node, "update npm", `sudo npm i -g npm`,
123+
); err != nil {
124+
t.Fatal(err)
125+
}
119126
}
120127

121128
if err := repeatRunE(

pkg/cmd/roachtest/tests/typeorm.go

+27-20
Original file line numberDiff line numberDiff line change
@@ -87,32 +87,39 @@ func registerTypeORM(r registry.Registry) {
8787
t.Fatal(err)
8888
}
8989

90-
if err := repeatRunE(
91-
ctx,
92-
t,
93-
c,
94-
node,
95-
"add nodesource key and deb repository",
96-
`
90+
// In case we are running into a state where machines are being reused, we first check to see if we
91+
// can use npm to reduce the potential of trying to add another nodesource key
92+
// (preventing gpg: dearmoring failed: File exists) errors.
93+
if err := c.RunE(
94+
ctx, node, `sudo npm i -g npm`,
95+
); err != nil {
96+
if err := repeatRunE(
97+
ctx,
98+
t,
99+
c,
100+
node,
101+
"add nodesource key and deb repository",
102+
`
97103
sudo apt-get update && \
98104
sudo apt-get install -y ca-certificates curl gnupg && \
99105
sudo mkdir -p /etc/apt/keyrings && \
100-
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
106+
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --batch --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
101107
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list`,
102-
); err != nil {
103-
t.Fatal(err)
104-
}
108+
); err != nil {
109+
t.Fatal(err)
110+
}
105111

106-
if err := repeatRunE(
107-
ctx, t, c, node, "install nodejs and npm", `sudo apt-get update && sudo apt-get -qq install nodejs`,
108-
); err != nil {
109-
t.Fatal(err)
110-
}
112+
if err := repeatRunE(
113+
ctx, t, c, node, "install nodejs and npm", `sudo apt-get update && sudo apt-get -qq install nodejs`,
114+
); err != nil {
115+
t.Fatal(err)
116+
}
111117

112-
if err := repeatRunE(
113-
ctx, t, c, node, "update npm", `sudo npm i -g npm`,
114-
); err != nil {
115-
t.Fatal(err)
118+
if err := repeatRunE(
119+
ctx, t, c, node, "update npm", `sudo npm i -g npm`,
120+
); err != nil {
121+
t.Fatal(err)
122+
}
116123
}
117124

118125
if err := repeatRunE(

0 commit comments

Comments
 (0)