Skip to content

Commit 9636dbb

Browse files
committed
Merge remote-tracking branch 'upstream/dev' into proj/nb-front-end-ip-in-vpc
2 parents e34a81a + 5e120f6 commit 9636dbb

86 files changed

Lines changed: 3827 additions & 650 deletions

File tree

Some content is hidden

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

.github/workflows/ci.yml

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,35 @@ on:
1212
jobs:
1313
lint:
1414
runs-on: ubuntu-latest
15+
permissions:
16+
contents: read
17+
pull-requests: read
1518
steps:
19+
# Enforce TPT-1234: prefix on PR titles, with the following exemptions:
20+
# - PRs labeled 'dependencies' (e.g. Dependabot PRs)
21+
# - PRs labeled 'hotfix' (urgent fixes that may not have a ticket)
22+
# - PRs labeled 'community-contribution' (external contributors without TPT tickets)
23+
# - PRs labeled 'ignore-for-release' (release PRs that don't need a ticket prefix)
24+
- name: Validate PR Title
25+
if: github.event_name == 'pull_request'
26+
uses: amannn/action-semantic-pull-request@v6
27+
with:
28+
types: |
29+
TPT-\d+
30+
requireScope: false
31+
# Override the default header pattern to allow hyphens and digits in the type
32+
# (e.g. "TPT-4298: Description"). The default pattern only matches word
33+
# characters (\w) which excludes hyphens.
34+
headerPattern: '^([\w-]+):\s?(.*)$'
35+
headerPatternCorrespondence: type, subject
36+
ignoreLabels: |
37+
dependencies
38+
hotfix
39+
community-contribution
40+
ignore-for-release
41+
env:
42+
GITHUB_TOKEN: ${{ github.token }}
43+
1644
- name: checkout repo
1745
uses: actions/checkout@v6
1846

@@ -31,7 +59,7 @@ jobs:
3159
runs-on: ubuntu-latest
3260
strategy:
3361
matrix:
34-
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
62+
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
3563
steps:
3664
- uses: actions/checkout@v6
3765
- uses: actions/setup-python@v6
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Clean Release Notes
2+
3+
on:
4+
release:
5+
types: [published]
6+
7+
jobs:
8+
clean-release-notes:
9+
runs-on: ubuntu-latest
10+
permissions:
11+
contents: write
12+
13+
steps:
14+
- name: Remove ticket prefixes from release notes
15+
uses: actions/github-script@v9
16+
with:
17+
script: |
18+
const release = context.payload.release;
19+
20+
let body = release.body;
21+
22+
if (!body) {
23+
console.log("Release body empty, nothing to clean.");
24+
return;
25+
}
26+
27+
// Remove ticket prefixes like "TPT-1234: " or "TPT-1234:"
28+
body = body.replace(/TPT-\d+:\s*/g, '');
29+
30+
await github.rest.repos.updateRelease({
31+
owner: context.repo.owner,
32+
repo: context.repo.repo,
33+
release_id: release.id,
34+
body: body
35+
});
36+
37+
console.log("Release notes cleaned.");

.github/workflows/dependency-review.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ jobs:
1313
- name: 'Checkout repository'
1414
uses: actions/checkout@v6
1515
- name: 'Dependency Review'
16-
uses: actions/dependency-review-action@v4
16+
uses: actions/dependency-review-action@v5
1717
with:
1818
comment-summary-in-pr: on-failure

.github/workflows/e2e-test-pr.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@ on:
22
pull_request:
33
workflow_dispatch:
44
inputs:
5+
run_aclp_logs_stream_tests:
6+
description: 'Set this parameter to "true" to run ACLP logs stream related test cases'
7+
required: false
8+
default: 'false'
9+
type: choice
10+
options:
11+
- 'true'
12+
- 'false'
513
run_db_fork_tests:
614
description: 'Set this parameter to "true" to run fork database related test cases'
715
required: false
@@ -104,7 +112,7 @@ jobs:
104112
run: |
105113
timestamp=$(date +'%Y%m%d%H%M')
106114
report_filename="${timestamp}_sdk_test_report.xml"
107-
make test-int RUN_DB_FORK_TESTS=${{ github.event.inputs.run_db_fork_tests }} RUN_DB_TESTS=${{ github.event.inputs.run_db_tests }} TEST_ARGS="--junitxml=${report_filename}" TEST_SUITE="${{ github.event.inputs.test_suite }}"
115+
make test-int RUN_DB_FORK_TESTS=${{ github.event.inputs.run_db_fork_tests }} RUN_DB_TESTS=${{ github.event.inputs.run_db_tests }} RUN_ACLP_LOGS_STREAM_TESTS=${{ github.event.inputs.run_aclp_logs_stream_tests }} TEST_ARGS="--junitxml=${report_filename}" TEST_SUITE="${{ github.event.inputs.test_suite }}"
108116
env:
109117
LINODE_TOKEN: ${{ secrets.LINODE_TOKEN }}
110118

@@ -123,7 +131,7 @@ jobs:
123131
LINODE_CLI_OBJ_ACCESS_KEY: ${{ secrets.LINODE_CLI_OBJ_ACCESS_KEY }}
124132
LINODE_CLI_OBJ_SECRET_KEY: ${{ secrets.LINODE_CLI_OBJ_SECRET_KEY }}
125133

126-
- uses: actions/github-script@v8
134+
- uses: actions/github-script@v9
127135
id: update-check-run
128136
if: ${{ inputs.pull_request_number != '' && fromJson(steps.commit-hash.outputs.data).repository.pullRequest.headRef.target.oid == inputs.sha }}
129137
env:

.github/workflows/e2e-test.yml

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@ name: Integration Tests
33
on:
44
workflow_dispatch:
55
inputs:
6+
run_aclp_logs_stream_tests:
7+
description: 'Set this parameter to "true" to run ACLP logs stream related test cases'
8+
required: false
9+
default: 'false'
10+
type: choice
11+
options:
12+
- 'true'
13+
- 'false'
614
run_db_fork_tests:
715
description: 'Set this parameter to "true" to run fork database related test cases'
816
required: false
@@ -55,8 +63,8 @@ on:
5563
- dev
5664

5765
env:
58-
DEFAULT_PYTHON_VERSION: "3.10"
59-
EOL_PYTHON_VERSION: "3.9"
66+
DEFAULT_PYTHON_VERSION: "3.13"
67+
EOL_PYTHON_VERSION: "3.10"
6068
EXIT_STATUS: 0
6169

6270
jobs:
@@ -99,13 +107,13 @@ jobs:
99107
run: |
100108
timestamp=$(date +'%Y%m%d%H%M')
101109
report_filename="${timestamp}_sdk_test_report.xml"
102-
make test-int RUN_DB_FORK_TESTS=${{ github.event.inputs.run_db_fork_tests }} RUN_DB_TESTS=${{ github.event.inputs.run_db_tests }} TEST_SUITE="${{ github.event.inputs.test_suite }}" TEST_ARGS="--junitxml=${report_filename}"
110+
make test-int RUN_DB_FORK_TESTS=${{ github.event.inputs.run_db_fork_tests }} RUN_DB_TESTS=${{ github.event.inputs.run_db_tests }} RUN_ACLP_LOGS_STREAM_TESTS=${{ github.event.inputs.run_aclp_logs_stream_tests }} TEST_SUITE="${{ github.event.inputs.test_suite }}" TEST_ARGS="--junitxml=${report_filename}"
103111
env:
104112
LINODE_TOKEN: ${{ env.LINODE_TOKEN }}
105113

106114
- name: Upload Test Report as Artifact
107115
if: always()
108-
uses: actions/upload-artifact@v6
116+
uses: actions/upload-artifact@v7
109117
with:
110118
name: test-report-file
111119
if-no-files-found: ignore
@@ -241,7 +249,7 @@ jobs:
241249
steps:
242250
- name: Notify Slack
243251
id: main_message
244-
uses: slackapi/slack-github-action@v2.1.1
252+
uses: slackapi/slack-github-action@v3
245253
with:
246254
method: chat.postMessage
247255
token: ${{ secrets.SLACK_BOT_TOKEN }}
@@ -273,7 +281,7 @@ jobs:
273281
274282
- name: Test summary thread
275283
if: success()
276-
uses: slackapi/slack-github-action@v2.1.1
284+
uses: slackapi/slack-github-action@v3
277285
with:
278286
method: chat.postMessage
279287
token: ${{ secrets.SLACK_BOT_TOKEN }}

.github/workflows/nightly-smoke-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545

4646
- name: Notify Slack
4747
if: always() && github.repository == 'linode/linode_api4-python'
48-
uses: slackapi/slack-github-action@v2.1.1
48+
uses: slackapi/slack-github-action@v3
4949
with:
5050
method: chat.postMessage
5151
token: ${{ secrets.SLACK_BOT_TOKEN }}

.github/workflows/publish-pypi.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,4 @@ jobs:
2828
LINODE_SDK_VERSION: ${{ github.event.release.tag_name }}
2929

3030
- name: Publish the release artifacts to PyPI
31-
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # pin@release/v1.13.0
31+
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # pin@release/v1.14.0

.github/workflows/release-notify-slack.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
steps:
1212
- name: Notify Slack - Main Message
1313
id: main_message
14-
uses: slackapi/slack-github-action@v2.1.1
14+
uses: slackapi/slack-github-action@v3
1515
with:
1616
method: chat.postMessage
1717
token: ${{ secrets.SLACK_BOT_TOKEN }}

CODEOWNERS

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
* @linode/dx
2-
1+
* @linode/dx @linode/dx-sdets

docs/conf.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010

1111
# If extensions (or modules to document with autodoc) are in another directory,
1212
# add these directories to sys.path here. If the directory is relative to the
13-
# documentation root, use os.path.abspath to make it absolute, like shown here.
13+
# documentation root, use Path(...).absolute() to make it absolute, like shown here.
1414
#
15-
import os
1615
import sys
17-
sys.path.insert(0, os.path.abspath('..'))
16+
from pathlib import Path
17+
sys.path.insert(0, str(Path('..').absolute()))
1818

1919

2020
# -- Project information -----------------------------------------------------

0 commit comments

Comments
 (0)