Skip to content

Commit a46b92d

Browse files
[release-19.0] Security improvements to GitHub Actions (#17520) (#17528)
Signed-off-by: Florent Poinsard <florent.poinsard@outlook.fr> Co-authored-by: Florent Poinsard <35779988+frouioui@users.noreply.github.com>
1 parent b9fedac commit a46b92d

File tree

115 files changed

+901
-482
lines changed

Some content is hidden

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

115 files changed

+901
-482
lines changed

.github/workflows/assign_milestone.yml

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ on:
44
pull_request_target:
55
types: [opened]
66

7-
permissions: read-all
7+
permissions:
8+
pull-requests: write
9+
contents: read
810

911
env:
1012
GH_TOKEN: ${{ github.token }}
@@ -13,18 +15,24 @@ jobs:
1315
build:
1416
name: Assign Milestone
1517
runs-on: ubuntu-24.04
16-
permissions:
17-
pull-requests: write
1818

1919
steps:
20-
- name: Set up Go
21-
uses: actions/setup-go@v5
22-
with:
23-
go-version: 1.22.10
24-
2520
- name: Checkout code
26-
uses: actions/checkout@v4
21+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
22+
with:
23+
# We must explicitly checkout the base's SHA to avoid executing any code coming from
24+
# the PR's SHA - Which would be executed in the base branch's context.
25+
# This is really important to limit any sort of pwn requests.
26+
ref: ${{ github.base_ref }}
27+
persist-credentials: 'false'
2728

2829
- name: Assign Milestone
2930
run: |
30-
gh pr edit ${{ github.event.number }} --milestone "v$(sed -n 's/.*versionName.*\"\([[:digit:]\.]*\).*\"/\1/p' ./go/vt/servenv/version.go)"
31+
# Ensure the content we sed from version.go is sanitized and match the correct format
32+
VERSION=$(sed -n 's/.*versionName.*\"\([[:digit:]\.]*\).*\"/\1/p' ./go/vt/servenv/version.go)
33+
if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
34+
echo "Invalid version format: $VERSION"
35+
exit 1
36+
fi
37+
38+
gh pr edit ${{ github.event.number }} --milestone "v$VERSION"

.github/workflows/auto_approve_pr.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ jobs:
1616

1717
steps:
1818
- name: Checkout code
19-
uses: actions/checkout@v4
19+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
20+
with:
21+
persist-credentials: 'false'
22+
2023
- name: Auto Approve Pull Request
2124
env:
2225
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/check_make_vtadmin_authz_testgen.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,13 @@ jobs:
2727
2828
- name: Check out code
2929
if: steps.skip-workflow.outputs.skip-workflow == 'false'
30-
uses: actions/checkout@v4
30+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
31+
with:
32+
persist-credentials: 'false'
3133

3234
- name: Check for changes in relevant files
3335
if: steps.skip-workflow.outputs.skip-workflow == 'false'
34-
uses: dorny/paths-filter@v3.0.1
36+
uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # v3.0.1
3537
id: changes
3638
with:
3739
token: ''
@@ -47,7 +49,7 @@ jobs:
4749
- '.github/workflows/check_make_vtadmin_authz_testgen.yml'
4850
4951
- name: Set up Go
50-
uses: actions/setup-go@v5
52+
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
5153
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.vtadmin_changes == 'true'
5254
with:
5355
go-version: 1.22.10

.github/workflows/check_make_vtadmin_web_proto.yml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,13 @@ jobs:
2727
2828
- name: Check out code
2929
if: steps.skip-workflow.outputs.skip-workflow == 'false'
30-
uses: actions/checkout@v4
30+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
31+
with:
32+
persist-credentials: 'false'
3133

3234
- name: Check for changes in relevant files
3335
if: steps.skip-workflow.outputs.skip-workflow == 'false'
34-
uses: dorny/paths-filter@v3.0.1
36+
uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # v3.0.1
3537
id: changes
3638
with:
3739
token: ''
@@ -49,14 +51,14 @@ jobs:
4951
- '.github/workflows/check_make_vtadmin_web_proto.yml'
5052
5153
- name: Set up Go
52-
uses: actions/setup-go@v5
54+
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
5355
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.proto_changes == 'true'
5456
with:
5557
go-version: 1.22.10
5658

5759
- name: Setup Node
5860
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.proto_changes == 'true'
59-
uses: actions/setup-node@v4
61+
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
6062
with:
6163
# node-version should match package.json
6264
node-version: '18.16.0'

.github/workflows/cluster_endtoend_12.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ env:
1515

1616
jobs:
1717
build:
18+
timeout-minutes: 60
1819
name: Run endtoend tests on Cluster (12)
1920
runs-on: ubuntu-24.04
2021

@@ -45,11 +46,13 @@ jobs:
4546
4647
- name: Check out code
4748
if: steps.skip-workflow.outputs.skip-workflow == 'false'
48-
uses: actions/checkout@v4
49+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
50+
with:
51+
persist-credentials: 'false'
4952

5053
- name: Check for changes in relevant files
5154
if: steps.skip-workflow.outputs.skip-workflow == 'false'
52-
uses: dorny/paths-filter@v3.0.1
55+
uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # v3.0.1
5356
id: changes
5457
with:
5558
token: ''
@@ -71,13 +74,13 @@ jobs:
7174
7275
- name: Set up Go
7376
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
74-
uses: actions/setup-go@v5
77+
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
7578
with:
7679
go-version: 1.22.10
7780

7881
- name: Set up python
7982
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
80-
uses: actions/setup-python@v5
83+
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1
8184

8285
- name: Tune the OS
8386
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -91,6 +94,7 @@ jobs:
9194
9295
- name: Get dependencies
9396
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
97+
timeout-minutes: 10
9498
run: |
9599
96100
# Get key to latest MySQL repo

.github/workflows/cluster_endtoend_13.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ env:
1515

1616
jobs:
1717
build:
18+
timeout-minutes: 60
1819
name: Run endtoend tests on Cluster (13)
1920
runs-on: ubuntu-24.04
2021

@@ -45,11 +46,13 @@ jobs:
4546
4647
- name: Check out code
4748
if: steps.skip-workflow.outputs.skip-workflow == 'false'
48-
uses: actions/checkout@v4
49+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
50+
with:
51+
persist-credentials: 'false'
4952

5053
- name: Check for changes in relevant files
5154
if: steps.skip-workflow.outputs.skip-workflow == 'false'
52-
uses: dorny/paths-filter@v3.0.1
55+
uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # v3.0.1
5356
id: changes
5457
with:
5558
token: ''
@@ -71,13 +74,13 @@ jobs:
7174
7275
- name: Set up Go
7376
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
74-
uses: actions/setup-go@v5
77+
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
7578
with:
7679
go-version: 1.22.10
7780

7881
- name: Set up python
7982
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
80-
uses: actions/setup-python@v5
83+
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1
8184

8285
- name: Tune the OS
8386
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -91,6 +94,7 @@ jobs:
9194
9295
- name: Get dependencies
9396
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
97+
timeout-minutes: 10
9498
run: |
9599
96100
# Get key to latest MySQL repo

.github/workflows/cluster_endtoend_15.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ env:
1515

1616
jobs:
1717
build:
18+
timeout-minutes: 60
1819
name: Run endtoend tests on Cluster (15)
1920
runs-on: ubuntu-24.04
2021

@@ -45,11 +46,13 @@ jobs:
4546
4647
- name: Check out code
4748
if: steps.skip-workflow.outputs.skip-workflow == 'false'
48-
uses: actions/checkout@v4
49+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
50+
with:
51+
persist-credentials: 'false'
4952

5053
- name: Check for changes in relevant files
5154
if: steps.skip-workflow.outputs.skip-workflow == 'false'
52-
uses: dorny/paths-filter@v3.0.1
55+
uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # v3.0.1
5356
id: changes
5457
with:
5558
token: ''
@@ -71,13 +74,13 @@ jobs:
7174
7275
- name: Set up Go
7376
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
74-
uses: actions/setup-go@v5
77+
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
7578
with:
7679
go-version: 1.22.10
7780

7881
- name: Set up python
7982
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
80-
uses: actions/setup-python@v5
83+
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1
8184

8285
- name: Tune the OS
8386
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -91,6 +94,7 @@ jobs:
9194
9295
- name: Get dependencies
9396
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
97+
timeout-minutes: 10
9498
run: |
9599
96100
# Get key to latest MySQL repo

.github/workflows/cluster_endtoend_18.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ env:
1515

1616
jobs:
1717
build:
18+
timeout-minutes: 60
1819
name: Run endtoend tests on Cluster (18)
1920
runs-on: ubuntu-24.04
2021

@@ -45,11 +46,13 @@ jobs:
4546
4647
- name: Check out code
4748
if: steps.skip-workflow.outputs.skip-workflow == 'false'
48-
uses: actions/checkout@v4
49+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
50+
with:
51+
persist-credentials: 'false'
4952

5053
- name: Check for changes in relevant files
5154
if: steps.skip-workflow.outputs.skip-workflow == 'false'
52-
uses: dorny/paths-filter@v3.0.1
55+
uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # v3.0.1
5356
id: changes
5457
with:
5558
token: ''
@@ -71,13 +74,13 @@ jobs:
7174
7275
- name: Set up Go
7376
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
74-
uses: actions/setup-go@v5
77+
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
7578
with:
7679
go-version: 1.22.10
7780

7881
- name: Set up python
7982
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
80-
uses: actions/setup-python@v5
83+
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1
8184

8285
- name: Tune the OS
8386
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -91,6 +94,7 @@ jobs:
9194
9295
- name: Get dependencies
9396
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
97+
timeout-minutes: 10
9498
run: |
9599
96100
# Get key to latest MySQL repo

.github/workflows/cluster_endtoend_21.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ env:
1515

1616
jobs:
1717
build:
18+
timeout-minutes: 60
1819
name: Run endtoend tests on Cluster (21)
1920
runs-on: ubuntu-24.04
2021

@@ -45,11 +46,13 @@ jobs:
4546
4647
- name: Check out code
4748
if: steps.skip-workflow.outputs.skip-workflow == 'false'
48-
uses: actions/checkout@v4
49+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
50+
with:
51+
persist-credentials: 'false'
4952

5053
- name: Check for changes in relevant files
5154
if: steps.skip-workflow.outputs.skip-workflow == 'false'
52-
uses: dorny/paths-filter@v3.0.1
55+
uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # v3.0.1
5356
id: changes
5457
with:
5558
token: ''
@@ -71,13 +74,13 @@ jobs:
7174
7275
- name: Set up Go
7376
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
74-
uses: actions/setup-go@v5
77+
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
7578
with:
7679
go-version: 1.22.10
7780

7881
- name: Set up python
7982
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
80-
uses: actions/setup-python@v5
83+
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1
8184

8285
- name: Tune the OS
8386
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
@@ -91,6 +94,7 @@ jobs:
9194
9295
- name: Get dependencies
9396
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.end_to_end == 'true'
97+
timeout-minutes: 10
9498
run: |
9599
96100
# Get key to latest MySQL repo

0 commit comments

Comments
 (0)