From be1017b7a8dc999964743b68de53d08867556f71 Mon Sep 17 00:00:00 2001 From: Zhiwei Liang <121905282+zliang-akamai@users.noreply.github.com> Date: Tue, 10 Dec 2024 10:59:27 -0500 Subject: [PATCH 1/7] Require Python >= 3.9 (#482) --- pyproject.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index b8b57880b..5098027af 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ name = "linode_api4" authors = [{ name = "Linode", email = "devs@linode.com" }] description = "The official Python SDK for Linode API v4" readme = "README.rst" -requires-python = ">=3.8" +requires-python = ">=3.9" keywords = [ "akamai", "Akamai Connected Cloud", @@ -25,7 +25,6 @@ classifiers = [ "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", From 40b88cb02a6b1f58048635218c02354b415193e9 Mon Sep 17 00:00:00 2001 From: Lena Garber <114949949+lgarber-akamai@users.noreply.github.com> Date: Fri, 13 Dec 2024 13:59:43 -0500 Subject: [PATCH 2/7] Make use of `_flatten_request_body_recursive(...)` wherever possible (#484) * Make use of _flatten_request_body_recursive(...) wherever possible * Drop database changes --- linode_api4/groups/image.py | 10 ++- linode_api4/groups/linode.py | 119 +++++++++++++++------------------- linode_api4/groups/volume.py | 14 ++-- linode_api4/objects/linode.py | 89 +++++++++++++------------ linode_api4/objects/volume.py | 26 ++++---- 5 files changed, 124 insertions(+), 134 deletions(-) diff --git a/linode_api4/groups/image.py b/linode_api4/groups/image.py index e644dc169..fda56fb0a 100644 --- a/linode_api4/groups/image.py +++ b/linode_api4/groups/image.py @@ -4,7 +4,8 @@ from linode_api4.errors import UnexpectedResponseError from linode_api4.groups import Group -from linode_api4.objects import Base, Disk, Image +from linode_api4.objects import Disk, Image +from linode_api4.objects.base import _flatten_request_body_recursive from linode_api4.util import drop_null_keys @@ -58,7 +59,7 @@ def create( :rtype: Image """ params = { - "disk_id": disk.id if issubclass(type(disk), Base) else disk, + "disk_id": disk, "label": label, "description": description, "tags": tags, @@ -67,7 +68,10 @@ def create( if cloud_init: params["cloud_init"] = cloud_init - result = self.client.post("/images", data=drop_null_keys(params)) + result = self.client.post( + "/images", + data=_flatten_request_body_recursive(drop_null_keys(params)), + ) if not "id" in result: raise UnexpectedResponseError( diff --git a/linode_api4/groups/linode.py b/linode_api4/groups/linode.py index da3ba501d..48f0d43b6 100644 --- a/linode_api4/groups/linode.py +++ b/linode_api4/groups/linode.py @@ -1,25 +1,29 @@ import base64 import os from collections.abc import Iterable -from typing import Optional, Union +from typing import Any, Dict, Optional, Union -from linode_api4 import InstanceDiskEncryptionType from linode_api4.common import load_and_validate_keys from linode_api4.errors import UnexpectedResponseError from linode_api4.groups import Group from linode_api4.objects import ( - Base, ConfigInterface, Firewall, - Image, Instance, + InstanceDiskEncryptionType, Kernel, + PlacementGroup, StackScript, Type, ) +from linode_api4.objects.base import _flatten_request_body_recursive from linode_api4.objects.filtering import Filter -from linode_api4.objects.linode import _expand_placement_group_assignment -from linode_api4.paginated_list import PaginatedList +from linode_api4.objects.linode import ( + Backup, + InstancePlacementGroupAssignment, + _expand_placement_group_assignment, +) +from linode_api4.util import drop_null_keys class LinodeGroup(Group): @@ -135,9 +139,20 @@ def instance_create( region, image=None, authorized_keys=None, + firewall: Optional[Union[Firewall, int]] = None, + backup: Optional[Union[Backup, int]] = None, + stackscript: Optional[Union[StackScript, int]] = None, disk_encryption: Optional[ Union[InstanceDiskEncryptionType, str] ] = None, + placement_group: Optional[ + Union[ + InstancePlacementGroupAssignment, + PlacementGroup, + Dict[str, Any], + int, + ] + ] = None, **kwargs, ): """ @@ -290,65 +305,45 @@ def instance_create( This usually indicates that you are using an outdated library. """ + ret_pass = None if image and not "root_pass" in kwargs: ret_pass = Instance.generate_root_password() kwargs["root_pass"] = ret_pass - authorized_keys = load_and_validate_keys(authorized_keys) - - if "stackscript" in kwargs: - # translate stackscripts - kwargs["stackscript_id"] = ( - kwargs["stackscript"].id - if issubclass(type(kwargs["stackscript"]), Base) - else kwargs["stackscript"] - ) - del kwargs["stackscript"] - - if "backup" in kwargs: - # translate backups - kwargs["backup_id"] = ( - kwargs["backup"].id - if issubclass(type(kwargs["backup"]), Base) - else kwargs["backup"] - ) - del kwargs["backup"] - - if "firewall" in kwargs: - fw = kwargs.pop("firewall") - kwargs["firewall_id"] = fw.id if isinstance(fw, Firewall) else fw - - if "interfaces" in kwargs: - interfaces = kwargs.get("interfaces") - if interfaces is not None and isinstance(interfaces, Iterable): - kwargs["interfaces"] = [ - i._serialize() if isinstance(i, ConfigInterface) else i - for i in interfaces - ] - - if "placement_group" in kwargs: - kwargs["placement_group"] = _expand_placement_group_assignment( - kwargs.get("placement_group") - ) + interfaces = kwargs.get("interfaces", None) + if interfaces is not None and isinstance(interfaces, Iterable): + kwargs["interfaces"] = [ + i._serialize() if isinstance(i, ConfigInterface) else i + for i in interfaces + ] params = { - "type": ltype.id if issubclass(type(ltype), Base) else ltype, - "region": region.id if issubclass(type(region), Base) else region, - "image": ( - (image.id if issubclass(type(image), Base) else image) - if image + "type": ltype, + "region": region, + "image": image, + "authorized_keys": load_and_validate_keys(authorized_keys), + # These will automatically be flattened below + "firewall_id": firewall, + "backup_id": backup, + "stackscript_id": stackscript, + # Special cases + "disk_encryption": ( + str(disk_encryption) if disk_encryption else None + ), + "placement_group": ( + _expand_placement_group_assignment(placement_group) + if placement_group else None ), - "authorized_keys": authorized_keys, } - if disk_encryption is not None: - params["disk_encryption"] = str(disk_encryption) - params.update(kwargs) - result = self.client.post("/linode/instances", data=params) + result = self.client.post( + "/linode/instances", + data=_flatten_request_body_recursive(drop_null_keys(params)), + ) if not "id" in result: raise UnexpectedResponseError( @@ -421,19 +416,6 @@ def stackscript_create( :returns: The new StackScript :rtype: StackScript """ - image_list = None - if type(images) is list or type(images) is PaginatedList: - image_list = [ - d.id if issubclass(type(d), Base) else d for d in images - ] - elif type(images) is Image: - image_list = [images.id] - elif type(images) is str: - image_list = [images] - else: - raise ValueError( - "images must be a list of Images or a single Image" - ) script_body = script if not script.startswith("#!"): @@ -448,14 +430,17 @@ def stackscript_create( params = { "label": label, - "images": image_list, + "images": images, "is_public": public, "script": script_body, "description": desc if desc else "", } params.update(kwargs) - result = self.client.post("/linode/stackscripts", data=params) + result = self.client.post( + "/linode/stackscripts", + data=_flatten_request_body_recursive(params), + ) if not "id" in result: raise UnexpectedResponseError( diff --git a/linode_api4/groups/volume.py b/linode_api4/groups/volume.py index 6e879c3d6..39d0aeaaa 100644 --- a/linode_api4/groups/volume.py +++ b/linode_api4/groups/volume.py @@ -1,6 +1,7 @@ from linode_api4.errors import UnexpectedResponseError from linode_api4.groups import Group -from linode_api4.objects import Base, Volume, VolumeType +from linode_api4.objects import Volume, VolumeType +from linode_api4.objects.base import _flatten_request_body_recursive class VolumeGroup(Group): @@ -57,14 +58,15 @@ def create(self, label, region=None, linode=None, size=20, **kwargs): params = { "label": label, "size": size, - "region": region.id if issubclass(type(region), Base) else region, - "linode_id": ( - linode.id if issubclass(type(linode), Base) else linode - ), + "region": region, + "linode_id": linode, } params.update(kwargs) - result = self.client.post("/volumes", data=params) + result = self.client.post( + "/volumes", + data=_flatten_request_body_recursive(params), + ) if not "id" in result: raise UnexpectedResponseError( diff --git a/linode_api4/objects/linode.py b/linode_api4/objects/linode.py index cb5c9d9af..8fe71bb7d 100644 --- a/linode_api4/objects/linode.py +++ b/linode_api4/objects/linode.py @@ -8,10 +8,14 @@ from typing import Any, Dict, List, Optional, Union from urllib import parse -from linode_api4 import util from linode_api4.common import load_and_validate_keys from linode_api4.errors import UnexpectedResponseError -from linode_api4.objects.base import Base, MappedObject, Property +from linode_api4.objects.base import ( + Base, + MappedObject, + Property, + _flatten_request_body_recursive, +) from linode_api4.objects.dbase import DerivedBase from linode_api4.objects.filtering import FilterableAttribute from linode_api4.objects.image import Image @@ -26,6 +30,7 @@ from linode_api4.objects.serializable import JSONObject, StrEnum from linode_api4.objects.vpc import VPC, VPCSubnet from linode_api4.paginated_list import PaginatedList +from linode_api4.util import drop_null_keys PASSWORD_CHARS = string.ascii_letters + string.digits + string.punctuation @@ -96,14 +101,14 @@ def restore_to(self, linode, **kwargs): """ d = { - "linode_id": ( - linode.id if issubclass(type(linode), Base) else linode - ), + "linode_id": linode, } d.update(kwargs) self._client.post( - "{}/restore".format(Backup.api_endpoint), model=self, data=d + "{}/restore".format(Backup.api_endpoint), + model=self, + data=_flatten_request_body_recursive(d), ) return True @@ -1063,8 +1068,6 @@ def resize( :rtype: bool """ - new_type = new_type.id if issubclass(type(new_type), Base) else new_type - params = { "type": new_type, "allow_auto_disk_resize": allow_auto_disk_resize, @@ -1073,7 +1076,9 @@ def resize( params.update(kwargs) resp = self._client.post( - "{}/resize".format(Instance.api_endpoint), model=self, data=params + "{}/resize".format(Instance.api_endpoint), + model=self, + data=_flatten_request_body_recursive(params), ) if "error" in resp: @@ -1189,7 +1194,7 @@ def config_create( param_interfaces.append(interface) params = { - "kernel": kernel.id if issubclass(type(kernel), Base) else kernel, + "kernel": kernel, "label": ( label if label @@ -1201,7 +1206,9 @@ def config_create( params.update(kwargs) result = self._client.post( - "{}/configs".format(Instance.api_endpoint), model=self, data=params + "{}/configs".format(Instance.api_endpoint), + model=self, + data=_flatten_request_body_recursive(params), ) self.invalidate() @@ -1280,6 +1287,7 @@ def disk_create( "filesystem": filesystem, "authorized_keys": authorized_keys, "authorized_users": authorized_users, + "stackscript_id": stackscript, } if disk_encryption is not None: @@ -1288,20 +1296,18 @@ def disk_create( if image: params.update( { - "image": ( - image.id if issubclass(type(image), Base) else image - ), + "image": image, "root_pass": root_pass, } ) - if stackscript: - params["stackscript_id"] = stackscript.id - if stackscript_args: - params["stackscript_data"] = stackscript_args + if stackscript_args: + params["stackscript_data"] = stackscript_args result = self._client.post( - "{}/disks".format(Instance.api_endpoint), model=self, data=params + "{}/disks".format(Instance.api_endpoint), + model=self, + data=_flatten_request_body_recursive(drop_null_keys(params)), ) self.invalidate() @@ -1461,18 +1467,20 @@ def rebuild( authorized_keys = load_and_validate_keys(authorized_keys) params = { - "image": image.id if issubclass(type(image), Base) else image, + "image": image, "root_pass": root_pass, "authorized_keys": authorized_keys, + "disk_encryption": ( + str(disk_encryption) if disk_encryption else None + ), } - if disk_encryption is not None: - params["disk_encryption"] = str(disk_encryption) - params.update(kwargs) result = self._client.post( - "{}/rebuild".format(Instance.api_endpoint), model=self, data=params + "{}/rebuild".format(Instance.api_endpoint), + model=self, + data=_flatten_request_body_recursive(drop_null_keys(params)), ) if not "id" in result: @@ -1597,7 +1605,7 @@ def initiate_migration( """ params = { - "region": region.id if issubclass(type(region), Base) else region, + "region": region, "upgrade": upgrade, "type": migration_type, "placement_group": _expand_placement_group_assignment( @@ -1605,10 +1613,10 @@ def initiate_migration( ), } - util.drop_null_keys(params) - self._client.post( - "{}/migrate".format(Instance.api_endpoint), model=self, data=params + "{}/migrate".format(Instance.api_endpoint), + model=self, + data=_flatten_request_body_recursive(drop_null_keys(params)), ) def firewalls(self): @@ -1740,21 +1748,12 @@ def clone( if not isinstance(disks, list) and not isinstance(disks, PaginatedList): disks = [disks] - cids = [c.id if issubclass(type(c), Base) else c for c in configs] - dids = [d.id if issubclass(type(d), Base) else d for d in disks] - params = { - "linode_id": ( - to_linode.id if issubclass(type(to_linode), Base) else to_linode - ), - "region": region.id if issubclass(type(region), Base) else region, - "type": ( - instance_type.id - if issubclass(type(instance_type), Base) - else instance_type - ), - "configs": cids if cids else None, - "disks": dids if dids else None, + "linode_id": to_linode, + "region": region, + "type": instance_type, + "configs": configs, + "disks": disks, "label": label, "group": group, "with_backups": with_backups, @@ -1763,10 +1762,10 @@ def clone( ), } - util.drop_null_keys(params) - result = self._client.post( - "{}/clone".format(Instance.api_endpoint), model=self, data=params + "{}/clone".format(Instance.api_endpoint), + model=self, + data=_flatten_request_body_recursive(drop_null_keys(params)), ) if not "id" in result: diff --git a/linode_api4/objects/volume.py b/linode_api4/objects/volume.py index 6d49f72c9..cda9932ab 100644 --- a/linode_api4/objects/volume.py +++ b/linode_api4/objects/volume.py @@ -1,8 +1,13 @@ from linode_api4.common import Price, RegionPrice from linode_api4.errors import UnexpectedResponseError -from linode_api4.objects.base import Base, Property +from linode_api4.objects.base import ( + Base, + Property, + _flatten_request_body_recursive, +) from linode_api4.objects.linode import Instance, Region from linode_api4.objects.region import Region +from linode_api4.util import drop_null_keys class VolumeType(Base): @@ -63,21 +68,16 @@ def attach(self, to_linode, config=None): If not given, the last booted Config will be chosen. :type config: Union[Config, int] """ + + body = { + "linode_id": to_linode, + "config": config, + } + result = self._client.post( "{}/attach".format(Volume.api_endpoint), model=self, - data={ - "linode_id": ( - to_linode.id - if issubclass(type(to_linode), Base) - else to_linode - ), - "config": ( - None - if not config - else config.id if issubclass(type(config), Base) else config - ), - }, + data=_flatten_request_body_recursive(drop_null_keys(body)), ) if not "id" in result: From cb39624d52a167024746b34199ec4169ed862ae0 Mon Sep 17 00:00:00 2001 From: Zhiwei Liang <121905282+zliang-akamai@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:58:11 -0500 Subject: [PATCH 3/7] Multiple workflows changes (#483) * Multiple workflows changes * Change build-mode to none * Upgrade AWS collection to v9.1.0 --- .github/dependabot.yml | 7 ++- .github/workflows/ci.yml | 43 +++++++++++++++++ .github/workflows/codeql.yml | 46 +++++++++++++++++++ .github/workflows/dependency-review.yml | 18 ++++++++ .github/workflows/lint.yml | 24 ---------- .github/workflows/main.yml | 26 ----------- .github/workflows/release-cross-repo-test.yml | 2 +- 7 files changed, 114 insertions(+), 52 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/codeql.yml create mode 100644 .github/workflows/dependency-review.yml delete mode 100644 .github/workflows/lint.yml delete mode 100644 .github/workflows/main.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml index ba1c6b80a..226428122 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -8,4 +8,9 @@ updates: - package-ecosystem: "pip" # See documentation for possible values directory: "/" # Location of package manifests schedule: - interval: "daily" + interval: "weekly" + + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..1fd2ad747 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,43 @@ + +name: Continuous Integration + +on: + push: + branches: + - dev + - main + pull_request: + workflow_dispatch: + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - name: checkout repo + uses: actions/checkout@v4 + + - name: setup python 3 + uses: actions/setup-python@v5 + with: + python-version: '3.x' + + - name: install dependencies + run: make dev-install + + - name: run linter + run: make lint + + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Run tests + run: | + pip install ".[test]" + tox diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 000000000..e1826bae2 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,46 @@ +name: "CodeQL Advanced" + +on: + push: + branches: [ "dev", "main", "proj/*" ] + pull_request: + branches: [ "dev", "main", "proj/*" ] + schedule: + - cron: '39 0 * * 6' + +jobs: + analyze: + name: Analyze (${{ matrix.language }}) + runs-on: ubuntu-latest + permissions: + # required for all workflows + security-events: write + + # required to fetch internal or private CodeQL packs + packages: read + + # only required for workflows in private repositories + actions: read + contents: read + + strategy: + fail-fast: false + matrix: + include: + - language: python + build-mode: none + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + build-mode: ${{ matrix.build-mode }} + queries: security-and-quality + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + category: "/language:${{matrix.language}}" diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml new file mode 100644 index 000000000..f2b7117d8 --- /dev/null +++ b/.github/workflows/dependency-review.yml @@ -0,0 +1,18 @@ +name: 'Dependency review' +on: + pull_request: + branches: [ "dev", "main", "proj/*" ] +permissions: + contents: read + pull-requests: write + +jobs: + dependency-review: + runs-on: ubuntu-latest + steps: + - name: 'Checkout repository' + uses: actions/checkout@v4 + - name: 'Dependency Review' + uses: actions/dependency-review-action@v4 + with: + comment-summary-in-pr: on-failure diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index 9f9391533..000000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Linting Actions -on: - pull_request: null - push: - branches: - - master - -jobs: - lint: - runs-on: ubuntu-latest - steps: - - name: checkout repo - uses: actions/checkout@v4 - - - name: setup python 3 - uses: actions/setup-python@v5 - with: - python-version: '3.x' - - - name: install dependencies - run: make dev-install - - - name: run linter - run: make lint \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index f29a4529f..000000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,26 +0,0 @@ - -name: Test Suite - -on: - push: - branches: - - dev - - main - pull_request: - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ['3.9','3.10','3.11', '3.12'] - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - name: Run tests - run: | - pip install ".[test]" - tox diff --git a/.github/workflows/release-cross-repo-test.yml b/.github/workflows/release-cross-repo-test.yml index 8708c3422..e99f356e5 100644 --- a/.github/workflows/release-cross-repo-test.yml +++ b/.github/workflows/release-cross-repo-test.yml @@ -43,7 +43,7 @@ jobs: pip install -r requirements.txt -r requirements-dev.txt --upgrade-strategy only-if-needed - name: install ansible dependencies - run: ansible-galaxy collection install amazon.aws:==6.0.1 + run: ansible-galaxy collection install amazon.aws:==9.1.0 - name: install collection run: | From a9cf21c73ce9fbeb16ce4c2706433a17ea7633bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 19:03:53 -0500 Subject: [PATCH 4/7] build(deps): bump pypa/gh-action-pypi-publish from 1.8.11 to 1.12.3 (#486) Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.11 to 1.12.3. - [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases) - [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/2f6f737ca5f74c637829c0f5c3acd0e29ea5e8bf...67339c736fd9354cd4f8cb0b744f2b82a74b5c70) --- updated-dependencies: - dependency-name: pypa/gh-action-pypi-publish dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/publish-pypi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-pypi.yaml b/.github/workflows/publish-pypi.yaml index bca202209..e0bf9e1db 100644 --- a/.github/workflows/publish-pypi.yaml +++ b/.github/workflows/publish-pypi.yaml @@ -24,6 +24,6 @@ jobs: LINODE_SDK_VERSION: ${{ github.event.release.tag_name }} - name: Publish the release artifacts to PyPI - uses: pypa/gh-action-pypi-publish@2f6f737ca5f74c637829c0f5c3acd0e29ea5e8bf # pin@release/v1.8.11 + uses: pypa/gh-action-pypi-publish@67339c736fd9354cd4f8cb0b744f2b82a74b5c70 # pin@release/v1.12.3 with: password: ${{ secrets.PYPI_API_TOKEN }} From f90352ebbffe724d81e9bc9182b3103a8871e0b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 19:04:16 -0500 Subject: [PATCH 5/7] build(deps): bump crazy-max/ghaction-github-labeler from 5.0.0 to 5.1.0 (#487) Bumps [crazy-max/ghaction-github-labeler](https://github.com/crazy-max/ghaction-github-labeler) from 5.0.0 to 5.1.0. - [Release notes](https://github.com/crazy-max/ghaction-github-labeler/releases) - [Commits](https://github.com/crazy-max/ghaction-github-labeler/compare/de749cf181958193cb7debf1a9c5bb28922f3e1b...b54af0c25861143e7c8813d7cbbf46d2c341680c) --- updated-dependencies: - dependency-name: crazy-max/ghaction-github-labeler dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/labeler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index da42b7e4a..444c69ffd 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -21,7 +21,7 @@ jobs: uses: actions/checkout@v4 - name: Run Labeler - uses: crazy-max/ghaction-github-labeler@de749cf181958193cb7debf1a9c5bb28922f3e1b + uses: crazy-max/ghaction-github-labeler@b54af0c25861143e7c8813d7cbbf46d2c341680c with: github-token: ${{ secrets.GITHUB_TOKEN }} yaml-file: .github/labels.yml From e69f7c7f76e9f0ad2b0a7ac568289a4e40d9a8b3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 19:04:39 -0500 Subject: [PATCH 6/7] build(deps): bump actions/github-script from 6 to 7 (#490) Bumps [actions/github-script](https://github.com/actions/github-script) from 6 to 7. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/github-script dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/e2e-test-pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-test-pr.yml b/.github/workflows/e2e-test-pr.yml index b90ee1796..5e81a7829 100644 --- a/.github/workflows/e2e-test-pr.yml +++ b/.github/workflows/e2e-test-pr.yml @@ -99,7 +99,7 @@ jobs: LINODE_CLI_OBJ_ACCESS_KEY: ${{ secrets.LINODE_CLI_OBJ_ACCESS_KEY }} LINODE_CLI_OBJ_SECRET_KEY: ${{ secrets.LINODE_CLI_OBJ_SECRET_KEY }} - - uses: actions/github-script@v6 + - uses: actions/github-script@v7 id: update-check-run if: ${{ inputs.pull_request_number != '' && fromJson(steps.commit-hash.outputs.data).repository.pullRequest.headRef.target.oid == inputs.sha }} env: From 087502b011ae2788c8149fb3bb942b38389d3b57 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 19:04:54 -0500 Subject: [PATCH 7/7] build(deps): bump actions/setup-python from 4 to 5 (#489) Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release-cross-repo-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-cross-repo-test.yml b/.github/workflows/release-cross-repo-test.yml index e99f356e5..052eaffb4 100644 --- a/.github/workflows/release-cross-repo-test.yml +++ b/.github/workflows/release-cross-repo-test.yml @@ -25,7 +25,7 @@ jobs: run: sudo apt-get install -y build-essential - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.10'