+ Details
+
+ This PR was created by a workflow that runs on all pushes to the repository.
+ It installs dependencies and then verifies that the repository is clean.
+
+
From 46c710021b3d90d29b332faf8c103b787c05a06d Mon Sep 17 00:00:00 2001
From: Mathew Payne <2772944+GeekMasher@users.noreply.github.com>
Date: Tue, 20 Aug 2024 10:39:53 +0000
Subject: [PATCH 22/37] feat: Add permissions and update PR creation
---
.github/workflows/python-vendor.yml | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/python-vendor.yml b/.github/workflows/python-vendor.yml
index 63ed7f5..85e2e96 100644
--- a/.github/workflows/python-vendor.yml
+++ b/.github/workflows/python-vendor.yml
@@ -16,6 +16,11 @@ on:
# All Major versions of Python that are currently supported
default: '3.11'
+permissions:
+ properties: read
+ contents: write
+ pull-requests: write
+
jobs:
custom-property:
runs-on: ubuntu-latest
@@ -69,16 +74,15 @@ jobs:
fi
- name: "Update vendored dependencies (Push)"
- if: ${{ github.event_name == 'push' }}
+ if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
uses: peter-evans/create-pull-request@v6
with:
token: ${{ github.token }}
- commit-message: Verify vendored dependencies
- title: Verify vendored dependencies
- branch: verify-vendored-dependencies
+ commit-message: "[chore]: Update vendored dependencies"
+ title: "[chore]: Update vendored dependencies"
+ branch: update-vendored-dependencies
base: ${{ github.event.before }}
labels: dependencies
- delete-branch: true
body: |
This is an automated PR to update that vendored dependencies are up to date.
It was created by a GitHub workflow defined in `.github/workflows/python-vendor.yml`.
From 7c3bece38082e560c708edb8b2524c607d51ed5a Mon Sep 17 00:00:00 2001
From: Mathew Payne <2772944+GeekMasher@users.noreply.github.com>
Date: Tue, 20 Aug 2024 10:43:44 +0000
Subject: [PATCH 23/37] fix: Permissions
---
.github/workflows/python-vendor.yml | 1 -
1 file changed, 1 deletion(-)
diff --git a/.github/workflows/python-vendor.yml b/.github/workflows/python-vendor.yml
index 85e2e96..c4f28d5 100644
--- a/.github/workflows/python-vendor.yml
+++ b/.github/workflows/python-vendor.yml
@@ -17,7 +17,6 @@ on:
default: '3.11'
permissions:
- properties: read
contents: write
pull-requests: write
From f91b7ab78b9a56a737685fc8fd0c3827c47ec4f7 Mon Sep 17 00:00:00 2001
From: Mathew Payne <2772944+GeekMasher@users.noreply.github.com>
Date: Tue, 20 Aug 2024 10:49:58 +0000
Subject: [PATCH 24/37] feat: Add change detection support
---
.github/workflows/python-vendor.yml | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/python-vendor.yml b/.github/workflows/python-vendor.yml
index c4f28d5..c7267d0 100644
--- a/.github/workflows/python-vendor.yml
+++ b/.github/workflows/python-vendor.yml
@@ -58,6 +58,7 @@ jobs:
python-version: ${{ inputs.version }}
- name: "Install and Vendor dependencies"
+ id: vendoring
run: |
set -e
@@ -71,9 +72,12 @@ jobs:
else
echo "Unknown vendoring method"
fi
+
+ CHANGES=$(git status --porcelain | wc -l)
+ echo "changes=$CHANGES" >> "$GITHUB_OUTPUT"
- name: "Update vendored dependencies (Push)"
- if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
+ if: ${{ steps.vendoring.outputs.changes != 0 && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') }}
uses: peter-evans/create-pull-request@v6
with:
token: ${{ github.token }}
From 32b441aec7e654bc5a134bd44dc18c16aa2866c3 Mon Sep 17 00:00:00 2001
From: Mathew Payne <2772944+GeekMasher@users.noreply.github.com>
Date: Tue, 20 Aug 2024 10:50:31 +0000
Subject: [PATCH 25/37] feat: Update Python workflow to support vendoring
---
.github/workflows/python.yml | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml
index a88627b..7d5b861 100644
--- a/.github/workflows/python.yml
+++ b/.github/workflows/python.yml
@@ -7,23 +7,44 @@ on:
pull_request:
workflow_call:
inputs:
+ version:
+ description: 'Python main version to vendor'
+ type: string
+ # All Major versions of Python that are currently supported
+ default: '3.11'
versions:
description: 'Python versions to test against'
type: string
# All Major versions of Python that are currently supported
default: '3.9,3.10,3.11,3.12'
+ vendor:
+ description: 'Whether to vendor the dependencies'
+ type: string
+ default: 'true'
jobs:
+ # Run the tests on all supported versions of Python
testing:
uses: advanced-security/reusable-workflows/.github/workflows/python-testing.yml@v0.1.0
secrets: inherit
with:
versions: ${{ inputs.versions }}
+ # Run linters on the codebase
linting:
uses: advanced-security/reusable-workflows/.github/workflows/python-linting.yml@v0.1.0
needs: [ testing ]
secrets: inherit
with:
versions: ${{ inputs.versions }}
+
+ # Vendor the dependencies into the repository if needed
+ vendoring:
+ uses: advanced-security/reusable-workflows/.github/workflows/python-vendor.yml@v0.1.0
+ needs: [ testing, linting ]
+ if: ${{ inputs.vendor == 'true' }}
+ secrets: inherit
+ with:
+ version: ${{ inputs.version }}
+ custom-property: 'OSSType'
From 99ab1199db16e46b0e6e9108ae7bea8cc4fd78b0 Mon Sep 17 00:00:00 2001
From: Mathew Payne <2772944+GeekMasher@users.noreply.github.com>
Date: Tue, 20 Aug 2024 12:40:31 +0000
Subject: [PATCH 26/37] feat: Python Release workflow
---
.github/workflows/python-release.yml | 69 ++++++++++++++++++++++++++++
1 file changed, 69 insertions(+)
create mode 100644 .github/workflows/python-release.yml
diff --git a/.github/workflows/python-release.yml b/.github/workflows/python-release.yml
new file mode 100644
index 0000000..1bc7bf0
--- /dev/null
+++ b/.github/workflows/python-release.yml
@@ -0,0 +1,69 @@
+# Python Releasing Workflow
+name: Python - Release
+
+on:
+ push:
+ workflow_call:
+ inputs:
+ version:
+ description: 'Python main version to vendor'
+ type: string
+ # All Major versions of Python that are currently supported
+ default: '3.11'
+
+permissions:
+ contents: write
+ pull-requests: write
+
+jobs:
+ version-changes:
+ runs-on: ubuntu-latest
+ outputs:
+ release: ${{ steps.check_release.outputs.release }}
+ version: ${{ steps.check_release.outputs.current_version }}
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: "Check release"
+ id: check_release
+ run: |
+ set -e
+
+ if [[ -f .release.yml ]]; then
+ pip install yq
+ current_version=$(cat .release.yml | yq -r ".version")
+ elif [[ -f pyproject.toml ]]; then
+ current_version=$(grep -oP '^version = "(.*)"$' pyproject.toml | cut -d '"' -f 2)
+ elif [[ -f setup.py ]]; then
+ current_version=$(grep -oP '^__version__ = "(.*)"$' setup.py | cut -d '"' -f 2)
+ else
+ echo "No version file found"
+ current_version="NA"
+ fi
+
+ released_version=$(gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" /repos/:owner/:repo/releases/latest | jq -r ".tag_name")
+
+ if [[ "$current_version" == "NA" || "$current_version" == "$released_version" ]]; then
+ echo "No new release found"
+ echo "release=false" >> "$GITHUB_OUTPUT"
+ else
+ echo "New release found"
+ echo "version=$current_version" >> "$GITHUB_OUTPUT"
+ echo "release=true" >> "$GITHUB_OUTPUT"
+ fi
+
+ python-release:
+ runs-on: ubuntu-latest
+ needs: [ version-changes ]
+ if:
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Set up Python ${{ inputs.version }}
+ uses: actions/setup-python@v5
+ with:
+ python-version: ${{ inputs.version }}
+
\ No newline at end of file
From 5a87e2744edb9626f2751991f6259e743eed780a Mon Sep 17 00:00:00 2001
From: Mathew Payne <2772944+GeekMasher@users.noreply.github.com>
Date: Tue, 20 Aug 2024 12:46:06 +0000
Subject: [PATCH 27/37] feat: Add GitHub Releases
---
.github/workflows/python-release.yml | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/python-release.yml b/.github/workflows/python-release.yml
index 1bc7bf0..e0f00ff 100644
--- a/.github/workflows/python-release.yml
+++ b/.github/workflows/python-release.yml
@@ -57,7 +57,7 @@ jobs:
python-release:
runs-on: ubuntu-latest
needs: [ version-changes ]
- if:
+ if: ${{ needs.version-changes.outputs.release == 'true' }}
steps:
- name: Checkout
uses: actions/checkout@v4
@@ -66,4 +66,19 @@ jobs:
uses: actions/setup-python@v5
with:
python-version: ${{ inputs.version }}
+
+ - name: "GitHub Release"
+ env:
+ GH_TOKEN: ${{ github.token }}
+ run: |
+ git config user.name github-actions
+ git config user.email github-actions@github.com
+
+ git tag "${{ needs.version-changes.outputs.version }}" --force
+ git push origin ${{ github.ref_name }}
+ git push origin --tags --force
+
+ gh release create --latest --generate-notes \
+ --title "v${{ needs.version-changes.outputs.version }}" \
+ "${{ needs.version-changes.outputs.version }}"
\ No newline at end of file
From b61ce07a50db7330a01aea718c2fc62190e140b0 Mon Sep 17 00:00:00 2001
From: Mathew Payne <2772944+GeekMasher@users.noreply.github.com>
Date: Tue, 20 Aug 2024 12:47:57 +0000
Subject: [PATCH 28/37] fix: Add GH Token
---
.github/workflows/python-release.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/workflows/python-release.yml b/.github/workflows/python-release.yml
index e0f00ff..0b50f5f 100644
--- a/.github/workflows/python-release.yml
+++ b/.github/workflows/python-release.yml
@@ -28,6 +28,8 @@ jobs:
- name: "Check release"
id: check_release
+ env:
+ GH_TOKEN: ${{ github.token }}
run: |
set -e
From cbe259108fc5f5a7d401434a69d870ee3b76d9c4 Mon Sep 17 00:00:00 2001
From: Mathew Payne <2772944+GeekMasher@users.noreply.github.com>
Date: Tue, 20 Aug 2024 12:51:36 +0000
Subject: [PATCH 29/37] fix: Update version output
---
.github/workflows/python-release.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/python-release.yml b/.github/workflows/python-release.yml
index 0b50f5f..fd2c3aa 100644
--- a/.github/workflows/python-release.yml
+++ b/.github/workflows/python-release.yml
@@ -20,7 +20,7 @@ jobs:
runs-on: ubuntu-latest
outputs:
release: ${{ steps.check_release.outputs.release }}
- version: ${{ steps.check_release.outputs.current_version }}
+ version: ${{ steps.check_release.outputs.version }}
steps:
- name: Checkout
From 6801d56b1ed84a1171959e9fc6b5da72c160911f Mon Sep 17 00:00:00 2001
From: Mathew Payne <2772944+GeekMasher@users.noreply.github.com>
Date: Tue, 20 Aug 2024 15:52:54 +0000
Subject: [PATCH 30/37] feat: Add GitHub Release
---
.github/workflows/release.yml | 46 +++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
create mode 100644 .github/workflows/release.yml
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..eb93167
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,46 @@
+# GitHub Releasing Workflow
+name: GitHub - Release
+
+on:
+ push:
+ workflow_call:
+ inputs:
+ version:
+ description: "The version to release"
+ required: true
+ type: string
+
+permissions:
+ contents: write
+
+jobs:
+ release:
+ runs-on: ubuntu-latest
+ steps:
+ # https://github.com/peter-murray/semver-data-action
+ - name: Parse SemVer
+ id: version
+ uses: peter-murray/semver-action@v1
+ with:
+ version: ${{ inputs.version }}
+
+ # Tags :: ${Full}, v${Major}, v${Major}.${Minor}, v${Major}.${Minor}.${Patch}
+ - name: "GitHub Release"
+ env:
+ GH_TOKEN: ${{ github.token }}
+ run: |
+ git config user.name github-actions
+ git config user.email github-actions@github.com
+
+ git tag "${{ steps.version.outputs.version }}" --force
+ git tag "v${{ steps.version.outputs.major }}" --force
+ git tag "v${{ steps.version.outputs.major }}.${{ steps.version.outputs.minor }}" --force
+ git tag "v${{ steps.version.outputs.major }}.${{ steps.version.outputs.minor }}.${{ steps.version.outputs.patch }}" --force
+
+ git push origin ${{ github.ref_name }}
+ git push origin --tags --force
+
+ gh release create --latest --generate-notes \
+ --title "v${{ needs.version-changes.outputs.version }}" \
+ "${{ needs.version-changes.outputs.version }}"
+
\ No newline at end of file
From d1a5bc11dbdd281de4c6a7b779308a55b0a1125f Mon Sep 17 00:00:00 2001
From: Mathew Payne <2772944+GeekMasher@users.noreply.github.com>
Date: Tue, 20 Aug 2024 15:55:05 +0000
Subject: [PATCH 31/37] feat: Replace Python release with GitHub release
---
.github/workflows/python-release.yml | 32 +++++-----------------------
1 file changed, 5 insertions(+), 27 deletions(-)
diff --git a/.github/workflows/python-release.yml b/.github/workflows/python-release.yml
index fd2c3aa..cff8863 100644
--- a/.github/workflows/python-release.yml
+++ b/.github/workflows/python-release.yml
@@ -56,31 +56,9 @@ jobs:
echo "release=true" >> "$GITHUB_OUTPUT"
fi
- python-release:
- runs-on: ubuntu-latest
+ github-release:
+ uses: advanced-security/reusable-workflows/.github/workflows/release.yml@v0.1.0
needs: [ version-changes ]
- if: ${{ needs.version-changes.outputs.release == 'true' }}
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Set up Python ${{ inputs.version }}
- uses: actions/setup-python@v5
- with:
- python-version: ${{ inputs.version }}
-
- - name: "GitHub Release"
- env:
- GH_TOKEN: ${{ github.token }}
- run: |
- git config user.name github-actions
- git config user.email github-actions@github.com
-
- git tag "${{ needs.version-changes.outputs.version }}" --force
- git push origin ${{ github.ref_name }}
- git push origin --tags --force
-
- gh release create --latest --generate-notes \
- --title "v${{ needs.version-changes.outputs.version }}" \
- "${{ needs.version-changes.outputs.version }}"
-
\ No newline at end of file
+ secrets: inherit
+ with:
+ version: ${{ needs.version-changes.outputs.version }}
From b4e19b31d4d4d86a73fbebec909d9102dbbe4fb0 Mon Sep 17 00:00:00 2001
From: Mathew Payne <2772944+GeekMasher@users.noreply.github.com>
Date: Tue, 20 Aug 2024 16:00:28 +0000
Subject: [PATCH 32/37] fix: Add check
---
.github/workflows/python-release.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/workflows/python-release.yml b/.github/workflows/python-release.yml
index cff8863..d565dd4 100644
--- a/.github/workflows/python-release.yml
+++ b/.github/workflows/python-release.yml
@@ -59,6 +59,7 @@ jobs:
github-release:
uses: advanced-security/reusable-workflows/.github/workflows/release.yml@v0.1.0
needs: [ version-changes ]
+ if: ${{ needs.version-changes.outputs.release == 'true' }}
secrets: inherit
with:
version: ${{ needs.version-changes.outputs.version }}
From c7e3eb4cf05b10150131580ec5069333fe9e1e18 Mon Sep 17 00:00:00 2001
From: Mathew Payne <2772944+GeekMasher@users.noreply.github.com>
Date: Tue, 20 Aug 2024 16:02:30 +0000
Subject: [PATCH 33/37] feat: Add release to Python workflow
---
.github/workflows/python.yml | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml
index 7d5b861..c130890 100644
--- a/.github/workflows/python.yml
+++ b/.github/workflows/python.yml
@@ -48,3 +48,11 @@ jobs:
with:
version: ${{ inputs.version }}
custom-property: 'OSSType'
+
+ # Release a new version of the package
+ release:
+ uses: advanced-security/reusable-workflows/.github/workflows/python-release.yml@v0.1.0
+ needs: [ testing, linting ]
+ secrets: inherit
+ with:
+ version: ${{ inputs.version }}
From bcae62d193e22997ae370bff7ab0a3761b2f9a5c Mon Sep 17 00:00:00 2001
From: Mathew Payne