From 7ce589590698e84b2471d45fa98bba98cf884f37 Mon Sep 17 00:00:00 2001 From: Ruh Date: Sun, 1 Feb 2026 10:58:42 +0530 Subject: [PATCH 01/22] Add GitHub Actions workflow for Python package publishing This workflow automates the upload of a Python package to PyPI upon release creation, including build and upload steps. --- .github/workflows/python-publish.yml | 70 ++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 .github/workflows/python-publish.yml diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml new file mode 100644 index 0000000..82f8dbd --- /dev/null +++ b/.github/workflows/python-publish.yml @@ -0,0 +1,70 @@ +# This workflow will upload a Python Package to PyPI when a release is created +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries + +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +name: Upload Python Package + +on: + release: + types: [published] + +permissions: + contents: read + +jobs: + release-build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.x" + + - name: Build release distributions + run: | + # NOTE: put your own distribution build steps here. + python -m pip install build + python -m build + + - name: Upload distributions + uses: actions/upload-artifact@v4 + with: + name: release-dists + path: dist/ + + pypi-publish: + runs-on: ubuntu-latest + needs: + - release-build + permissions: + # IMPORTANT: this permission is mandatory for trusted publishing + id-token: write + + # Dedicated environments with protections for publishing are strongly recommended. + # For more information, see: https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules + environment: + name: pypi + # OPTIONAL: uncomment and update to include your PyPI project URL in the deployment status: + # url: https://pypi.org/p/YOURPROJECT + # + # ALTERNATIVE: if your GitHub Release name is the PyPI project version string + # ALTERNATIVE: exactly, uncomment the following line instead: + # url: https://pypi.org/project/YOURPROJECT/${{ github.event.release.name }} + + steps: + - name: Retrieve release distributions + uses: actions/download-artifact@v4 + with: + name: release-dists + path: dist/ + + - name: Publish release distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ From 7e4763fe13ff2256ce85528efd8b056061e413ee Mon Sep 17 00:00:00 2001 From: Ruh Date: Sun, 1 Feb 2026 11:00:30 +0530 Subject: [PATCH 02/22] Add Dependabot configuration file Configure Dependabot for version updates on a weekly schedule. --- .github/dependabot.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..5990d9c --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" From 5274e19eec8b793abd503bdeb15d05391a463769 Mon Sep 17 00:00:00 2001 From: Ruh Date: Sun, 1 Feb 2026 13:35:23 +0530 Subject: [PATCH 03/22] Create jekyll-gh-pages.yml --- .github/workflows/jekyll-gh-pages.yml | 51 +++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/jekyll-gh-pages.yml diff --git a/.github/workflows/jekyll-gh-pages.yml b/.github/workflows/jekyll-gh-pages.yml new file mode 100644 index 0000000..e31d81c --- /dev/null +++ b/.github/workflows/jekyll-gh-pages.yml @@ -0,0 +1,51 @@ +# Sample workflow for building and deploying a Jekyll site to GitHub Pages +name: Deploy Jekyll with GitHub Pages dependencies preinstalled + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Pages + uses: actions/configure-pages@v5 + - name: Build with Jekyll + uses: actions/jekyll-build-pages@v1 + with: + source: ./ + destination: ./_site + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 From 26bbc21bcba48abfa9da22080e84ec25a04ecd87 Mon Sep 17 00:00:00 2001 From: Ruh Date: Sun, 1 Feb 2026 15:52:55 +0530 Subject: [PATCH 04/22] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e69de29..3c15b64 100644 --- a/README.md +++ b/README.md @@ -0,0 +1 @@ +[![CircleCI](https://dl.circleci.com/status-badge/img/gh/Ruh-Al-Tarikh/pyray/tree/master.svg?style=svg)](https://dl.circleci.com/status-badge/redirect/gh/Ruh-Al-Tarikh/pyray/tree/master) From 70363d5381cce7f3fe93a468de8ab24b8f3b3fee Mon Sep 17 00:00:00 2001 From: Ruh Date: Sun, 1 Feb 2026 21:07:13 +0530 Subject: [PATCH 05/22] Add .circleci/config.yml --- .circleci/config.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..bb68b14 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,31 @@ +# Use the latest 2.1 version of CircleCI pipeline process engine. +# See: https://circleci.com/docs/reference/configuration-reference +version: 2.1 + +# Define a job to be invoked later in a workflow. +# See: https://circleci.com/docs/guides/orchestrate/jobs-steps/#jobs-overview & https://circleci.com/docs/reference/configuration-reference/#jobs +jobs: + say-hello: + # Specify the execution environment. You can specify an image from Docker Hub or use one of our convenience images from CircleCI's Developer Hub. + # See: https://circleci.com/docs/guides/execution-managed/executor-intro/ & https://circleci.com/docs/reference/configuration-reference/#executor-job + docker: + # Specify the version you desire here + # See: https://circleci.com/developer/images/image/cimg/base + - image: cimg/base:current + + # Add steps to the job + # See: https://circleci.com/docs/guides/orchestrate/jobs-steps/#steps-overview & https://circleci.com/docs/reference/configuration-reference/#steps + steps: + # Checkout the code as the first step. + - checkout + - run: + name: "Say hello" + command: "echo Hello, World!" + +# Orchestrate jobs using workflows +# See: https://circleci.com/docs/guides/orchestrate/workflows/ & https://circleci.com/docs/reference/configuration-reference/#workflows +workflows: + say-hello-workflow: # This is the name of the workflow, feel free to change it to better match your workflow. + # Inside the workflow, you define the jobs you want to run. + jobs: + - say-hello \ No newline at end of file From 2288ab3fe29195376ff7e899c609ef1a8c5e3ba6 Mon Sep 17 00:00:00 2001 From: Rizwan Date: Mon, 2 Feb 2026 03:43:57 +0530 Subject: [PATCH 06/22] git add -m "file changes" --- README.md | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/README.md b/README.md index e69de29..a4552a2 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,121 @@ +# πŸš€ QuickStart + +QuickStart is a Python starter repository for quickly getting started with Prefect workflows and Prefect Cloud. + +It provides a simple, ready-to-run example flow to help you explore Prefect’s orchestration capabilities with minimal setup. + +πŸ“Œ Features + +Pre-configured Prefect Cloud integration + +Minimal Python project structure for experimentation + +Easy to extend for your own workflows + +Ideal for learning Prefect or bootstrapping new automation projects + +πŸ› οΈ Requirements + +Python 3.10+ + +pip (comes with Python) + +Check your Python version: + +python --version + +⚑ Quick Start + +1️⃣ Clone the repository + +git clone + +cd quickstart + +2️⃣ (Optional) Create a virtual environment + +Windows: + +python -m venv venv + +venv\\Scripts\\activate + +Linux / macOS: + +python -m venv venv + +source venv/bin/activate + +3️⃣ Install dependencies + +pip install -r requirements.txt + +Or if you plan to install as a package: + +pip install . + +4️⃣ Run the demo flow + +quickstart-demo + +Expected output: + +QuickStart demo running πŸš€ + +πŸ“ Project Structure + +quickstart/ + +β”œβ”€ pyproject.toml # Project metadata \& scripts + +β”œβ”€ README.md # Documentation + +β”œβ”€ requirements.txt # Dependencies + +β”œβ”€ getting\_started.py # Example Prefect workflow + +└─ venv/ # Optional virtual environment + +πŸ§ͺ Usage + +Modify getting\_started.py to define your own Prefect workflows, tasks, and flows. + +Example: + +from prefect import flow, task + +@task + +def say\_hello(name: str): + +  print(f"Hello, {name}!") + +@flow + +def main(): + +  say\_hello("QuickStart user") + +if \_\_name\_\_ == "\_\_main\_\_": + +  main() + +🀝 Contributing + +Contributions are welcome! + +Fork the repo + +Create a new branch + +Make your changes + +Submit a pull request + +πŸ“„ License + +This project is licensed under the MIT License. Feel free to use, modify, and distribute. + +🌟 Acknowledgement + +Built as a minimal, developer-friendly starter for learning and experimenting with Prefect automation workflows. From 313926091beaf2bf23388df8417c11b9cf957af9 Mon Sep 17 00:00:00 2001 From: Ruh Date: Mon, 2 Feb 2026 04:32:19 +0530 Subject: [PATCH 07/22] Update README.md --- README.md | 120 ------------------------------------------------------ 1 file changed, 120 deletions(-) diff --git a/README.md b/README.md index a4552a2..8b13789 100644 --- a/README.md +++ b/README.md @@ -1,121 +1 @@ -# πŸš€ QuickStart -QuickStart is a Python starter repository for quickly getting started with Prefect workflows and Prefect Cloud. - -It provides a simple, ready-to-run example flow to help you explore Prefect’s orchestration capabilities with minimal setup. - -πŸ“Œ Features - -Pre-configured Prefect Cloud integration - -Minimal Python project structure for experimentation - -Easy to extend for your own workflows - -Ideal for learning Prefect or bootstrapping new automation projects - -πŸ› οΈ Requirements - -Python 3.10+ - -pip (comes with Python) - -Check your Python version: - -python --version - -⚑ Quick Start - -1️⃣ Clone the repository - -git clone - -cd quickstart - -2️⃣ (Optional) Create a virtual environment - -Windows: - -python -m venv venv - -venv\\Scripts\\activate - -Linux / macOS: - -python -m venv venv - -source venv/bin/activate - -3️⃣ Install dependencies - -pip install -r requirements.txt - -Or if you plan to install as a package: - -pip install . - -4️⃣ Run the demo flow - -quickstart-demo - -Expected output: - -QuickStart demo running πŸš€ - -πŸ“ Project Structure - -quickstart/ - -β”œβ”€ pyproject.toml # Project metadata \& scripts - -β”œβ”€ README.md # Documentation - -β”œβ”€ requirements.txt # Dependencies - -β”œβ”€ getting\_started.py # Example Prefect workflow - -└─ venv/ # Optional virtual environment - -πŸ§ͺ Usage - -Modify getting\_started.py to define your own Prefect workflows, tasks, and flows. - -Example: - -from prefect import flow, task - -@task - -def say\_hello(name: str): - -  print(f"Hello, {name}!") - -@flow - -def main(): - -  say\_hello("QuickStart user") - -if \_\_name\_\_ == "\_\_main\_\_": - -  main() - -🀝 Contributing - -Contributions are welcome! - -Fork the repo - -Create a new branch - -Make your changes - -Submit a pull request - -πŸ“„ License - -This project is licensed under the MIT License. Feel free to use, modify, and distribute. - -🌟 Acknowledgement - -Built as a minimal, developer-friendly starter for learning and experimenting with Prefect automation workflows. From 8f916e7fd440e893da4d61173ad2fe1c650a9c35 Mon Sep 17 00:00:00 2001 From: Ruh Date: Mon, 2 Feb 2026 15:34:05 +0530 Subject: [PATCH 08/22] Add .circleci/config.yml From cdb502dd97844a10bf823141e87c4e34cb7a36e4 Mon Sep 17 00:00:00 2001 From: Ruh Date: Mon, 2 Feb 2026 21:40:00 +0530 Subject: [PATCH 09/22] Update README.md --- README.md | 193 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 193 insertions(+) diff --git a/README.md b/README.md index 8b13789..5ad5aef 100644 --- a/README.md +++ b/README.md @@ -1 +1,194 @@ +# quickstart +A minimal Python "quickstart" project template to get a small script or package up and running quickly. + +Badges +- Build / CI: ![CI](https://img.shields.io/badge/ci-none-lightgrey) +- Python versions: ![Python](https://img.shields.io/badge/python-3.8%2B-blue) +- License: ![License](https://img.shields.io/badge/license-MIT-green) + +Table of contents +- [About](#about) +- [Prerequisites](#prerequisites) +- [Quick start](#quick-start) +- [Usage](#usage) +- [Development](#development) +- [Testing](#testing) +- [Linting & Formatting](#linting--formatting) +- [Packaging](#packaging) +- [Contributing](#contributing) +- [License](#license) +- [Contact](#contact) + +About +----- +quickstart is a small Python starter project that demonstrates a clean layout and includes common development tasks (venv, install, run, tests, lint). Use it as a scaffold for CLI tools, libraries or small services. + +Prerequisites +------------- +- Python 3.8 or newer (3.11+ recommended) +- Git +- Recommended: pip, virtualenv (or use python -m venv) +- Optional tools: poetry / pipx / tox for alternative workflows + +Quick start +----------- +1. Clone the repo + - Unix / PowerShell + ```bash + git clone https://github.com/Ruh-Al-Tarikh/quickstart.git + cd quickstart + ``` + +2. Create a virtual environment and activate it + - macOS / Linux: + ```bash + python -m venv .venv + source .venv/bin/activate + ``` + - Windows PowerShell: + ```powershell + python -m venv .venv + .\.venv\Scripts\Activate.ps1 + ``` + +3. Install dependencies + - If using requirements.txt: + ```bash + pip install -r requirements.txt + ``` + - If the project uses editable install (package layout): + ```bash + pip install -e . + ``` + +Usage +----- +- Run the main script (example): + ```bash + python -m quickstart + ``` +- Or if a CLI entry point is defined (after pip install -e .): + ```bash + quickstart --help + ``` + +Example +------- +If the repository contains a small module with a function, a minimal usage example might look like: + +```python +from quickstart import say_hello + +def main(): + print(say_hello("World")) + +if __name__ == "__main__": + main() +``` + +Development +----------- +Install developer dependencies (example using requirements-dev.txt): +```bash +pip install -r requirements-dev.txt +``` + +Common dev tasks: +- Run the app locally: python -m quickstart +- Run a REPL with project on path: + ```bash + python -c "import quickstart; print(quickstart.__version__)" + ``` + +Testing +------- +This project uses pytest (adjust to your test runner). + +Install test deps: +```bash +pip install pytest +``` + +Run tests: +```bash +pytest +``` + +For coverage: +```bash +pip install coverage +coverage run -m pytest +coverage report +``` + +Linting & Formatting +-------------------- +Recommended tools: +- black (formatter) +- ruff / flake8 (linter) +- isort (imports) + +Install and run: +```bash +pip install black ruff isort +black . +ruff . +isort . +``` + +Type checking +------------- +If you use type hints, run mypy: +```bash +pip install mypy +mypy quickstart +``` + +Packaging +--------- +If packaging as an installable Python package, include a pyproject.toml (PEP 621) or setup.cfg + setup.py. Example (build wheel and sdist): +```bash +pip install build +python -m build +``` + +Publishing +---------- +To publish to PyPI (example with twine): +```bash +pip install twine +python -m build +twine upload dist/* +``` + +Continuous Integration +---------------------- +Add a GitHub Actions workflow (e.g., .github/workflows/ci.yml) to run tests, lint and build on push/PR. + +Contributing +------------ +Contributions are welcome. Please: +1. Create an issue to discuss major changes. +2. Open a branch: git checkout -b feat/your-feature +3. Make changes with tests. +4. Create a pull request. + +Use conventional commits or describe the change clearly in the PR. + +License +------- +This project is provided under the MIT License. See LICENSE file for details. + +Contact +------- +Created by Ruh-Al-Tarikh. For questions or help, open an issue or contact the maintainer via GitHub. + +Optional files to include in the repo +- requirements.txt +- requirements-dev.txt +- pyproject.toml / setup.cfg or setup.py +- .gitignore (.venv, __pycache__, .pytest_cache) +- tests/ (pytest tests) +- LICENSE (MIT) +- .github/workflows/ci.yml (CI pipeline) From 633963fa9acb94fabb7bae32f87ca692ce424459 Mon Sep 17 00:00:00 2001 From: Ruh Date: Mon, 2 Feb 2026 21:45:03 +0530 Subject: [PATCH 10/22] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 5ad5aef..dd5ddb6 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![Upload Python Package](https://github.com/Ruh-Al-Tarikh/quickstart/actions/workflows/python-publish.yml/badge.svg)](https://github.com/Ruh-Al-Tarikh/quickstart/actions/workflows/python-publish.yml) + # quickstart A minimal Python "quickstart" project template to get a small script or package up and running quickly. From 1bed6252964fe7ca5d32b774b5c103318a5971e3 Mon Sep 17 00:00:00 2001 From: Ruh Date: Thu, 5 Feb 2026 10:58:30 +0530 Subject: [PATCH 11/22] Add .circleci/config.yml From f2c0e6288658fc49e65e886d6d767ca755c7a56f Mon Sep 17 00:00:00 2001 From: Rizwan Date: Fri, 6 Feb 2026 14:44:55 +0530 Subject: [PATCH 12/22] Add CI workflow with .NET build and tests --- .github/workflows/ci.yml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..c01db05 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,35 @@ +name: CI + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v6 + + - name: Setup .NET + uses: actions/setup-dotnet@v5 + with: + dotnet-version: '8.0.x' + + - name: Restore dependencies + run: dotnet restore src/OctoshiftCLI.sln + + - name: Build + run: dotnet build src/OctoshiftCLI.sln --no-restore --configuration Release + + - name: Run Unit Tests + run: dotnet test src/OctoshiftCLI.Tests/OctoshiftCLI.Tests.csproj --no-build --logger "trx;LogFileName=test-results.trx" + + - name: Upload Test Results + uses: actions/upload-artifact@v6 + with: + name: test-results + path: src/OctoshiftCLI.Tests/TestResults From 8605f150b3980fa5f639b3c4514d5eef9836c351 Mon Sep 17 00:00:00 2001 From: Rizwan Date: Fri, 6 Feb 2026 14:50:37 +0530 Subject: [PATCH 13/22] Potential fix for code scanning alert no. 2: Workflow does not contain permissions Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c01db05..98a2148 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,6 @@ name: CI +permissions: + contents: read on: push: From 4b73f09311b2a2170e80e399503e6f4415de5309 Mon Sep 17 00:00:00 2001 From: Rizwan Date: Fri, 6 Feb 2026 14:52:35 +0530 Subject: [PATCH 14/22] Create webpack.yml --- .github/workflows/webpack.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/webpack.yml diff --git a/.github/workflows/webpack.yml b/.github/workflows/webpack.yml new file mode 100644 index 0000000..9626ff6 --- /dev/null +++ b/.github/workflows/webpack.yml @@ -0,0 +1,28 @@ +name: NodeJS with Webpack + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.x, 20.x, 22.x] + + steps: + - uses: actions/checkout@v4 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + + - name: Build + run: | + npm install + npx webpack From 7b299dd3557039c11957b2a21e798930c8f80823 Mon Sep 17 00:00:00 2001 From: Rizwan Date: Fri, 6 Feb 2026 14:57:36 +0530 Subject: [PATCH 15/22] Create snyk-security.yml --- .github/workflows/snyk-security.yml | 79 +++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 .github/workflows/snyk-security.yml diff --git a/.github/workflows/snyk-security.yml b/.github/workflows/snyk-security.yml new file mode 100644 index 0000000..578dcae --- /dev/null +++ b/.github/workflows/snyk-security.yml @@ -0,0 +1,79 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# A sample workflow which sets up Snyk to analyze the full Snyk platform (Snyk Open Source, Snyk Code, +# Snyk Container and Snyk Infrastructure as Code) +# The setup installs the Snyk CLI - for more details on the possible commands +# check https://docs.snyk.io/snyk-cli/cli-reference +# The results of Snyk Code are then uploaded to GitHub Security Code Scanning +# +# In order to use the Snyk Action you will need to have a Snyk API token. +# More details in https://github.com/snyk/actions#getting-your-snyk-token +# or you can signup for free at https://snyk.io/login +# +# For more examples, including how to limit scans to only high-severity issues +# and fail PR checks, see https://github.com/snyk/actions/ + +name: Snyk Security + +on: + push: + branches: ["main" ] + pull_request: + branches: ["main"] + +permissions: + contents: read + +jobs: + snyk: + permissions: + contents: read # for actions/checkout to fetch code + security-events: write # for github/codeql-action/upload-sarif to upload SARIF results + actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Snyk CLI to check for security issues + # Snyk can be used to break the build when it detects security issues. + # In this case we want to upload the SAST issues to GitHub Code Scanning + uses: snyk/actions/setup@806182742461562b67788a64410098c9d9b96adb + + # For Snyk Open Source you must first set up the development environment for your application's dependencies + # For example for Node + #- uses: actions/setup-node@v4 + # with: + # node-version: 20 + + env: + # This is where you will need to introduce the Snyk API token created with your Snyk account + SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} + + # Runs Snyk Code (SAST) analysis and uploads result into GitHub. + # Use || true to not fail the pipeline + - name: Snyk Code test + run: snyk code test --sarif > snyk-code.sarif # || true + + # Runs Snyk Open Source (SCA) analysis and uploads result to Snyk. + - name: Snyk Open Source monitor + run: snyk monitor --all-projects + + # Runs Snyk Infrastructure as Code (IaC) analysis and uploads result to Snyk. + # Use || true to not fail the pipeline. + - name: Snyk IaC test and report + run: snyk iac test --report # || true + + # Build the docker image for testing + - name: Build a Docker image + run: docker build -t your/image-to-test . + # Runs Snyk Container (Container and SCA) analysis and uploads result to Snyk. + - name: Snyk Container monitor + run: snyk container monitor your/image-to-test --file=Dockerfile + + # Push the Snyk Code results into GitHub Code Scanning tab + - name: Upload result to GitHub Code Scanning + uses: github/codeql-action/upload-sarif@v3 + with: + sarif_file: snyk-code.sarif From 21436320117821cabad8a550dc7fe1ae18a598d5 Mon Sep 17 00:00:00 2001 From: Rizwan Date: Fri, 6 Feb 2026 14:58:55 +0530 Subject: [PATCH 16/22] Potential fix for code scanning alert no. 1: Disabling certificate validation Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- actions-runner/bin/checkScripts/downloadCert.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/actions-runner/bin/checkScripts/downloadCert.js b/actions-runner/bin/checkScripts/downloadCert.js index fa4e86a..5f89874 100644 --- a/actions-runner/bin/checkScripts/downloadCert.js +++ b/actions-runner/bin/checkScripts/downloadCert.js @@ -10,8 +10,6 @@ const proxyPort = process.env['PROXYPORT'] || '' const proxyUsername = process.env['PROXYUSERNAME'] || '' const proxyPassword = process.env['PROXYPASSWORD'] || '' -process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0' - if (proxyHost === '') { const options = { hostname: hostname, From b9c5cc979f6e294ae874a0492a1351236cba29a9 Mon Sep 17 00:00:00 2001 From: Rizwan Date: Fri, 6 Feb 2026 15:09:56 +0530 Subject: [PATCH 17/22] Potential fix for code scanning alert no. 3: Workflow does not contain permissions Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- .github/workflows/webpack.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/webpack.yml b/.github/workflows/webpack.yml index 9626ff6..18963e8 100644 --- a/.github/workflows/webpack.yml +++ b/.github/workflows/webpack.yml @@ -1,5 +1,8 @@ name: NodeJS with Webpack +permissions: + contents: read + on: push: branches: [ "main" ] From a00c985c5e68322129a53a636717f929614cca49 Mon Sep 17 00:00:00 2001 From: Rizwan Date: Fri, 6 Feb 2026 22:03:29 +0530 Subject: [PATCH 18/22] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 75c2c3d..724961c 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ <<<<<<< HEAD -# + +πŸš€ QuickStart <<<<<<< HEAD -πŸš€ QuickStart + ======= [![Upload Python Package](https://github.com/Ruh-Al-Tarikh/quickstart/actions/workflows/python-publish.yml/badge.svg)](https://github.com/Ruh-Al-Tarikh/quickstart/actions/workflows/python-publish.yml) >>>>>>> e9fa83a9161933a6486eb1bee48501f812e0fdf8 From a944cf31756b7a60d56ed3e0fab148f1da144e64 Mon Sep 17 00:00:00 2001 From: Rizwan Date: Fri, 6 Feb 2026 22:04:04 +0530 Subject: [PATCH 19/22] Update README.md --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 724961c..6857c65 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,7 @@ -<<<<<<< HEAD - -πŸš€ QuickStart <<<<<<< HEAD +πŸš€ QuickStart ======= [![Upload Python Package](https://github.com/Ruh-Al-Tarikh/quickstart/actions/workflows/python-publish.yml/badge.svg)](https://github.com/Ruh-Al-Tarikh/quickstart/actions/workflows/python-publish.yml) From 746e72b7723f2022f155bca2569652c905b45794 Mon Sep 17 00:00:00 2001 From: Rizwan Date: Fri, 6 Feb 2026 22:05:26 +0530 Subject: [PATCH 20/22] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 6857c65..882d123 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,10 @@ πŸš€ QuickStart +<<<<<<< HEAD + ======= + [![Upload Python Package](https://github.com/Ruh-Al-Tarikh/quickstart/actions/workflows/python-publish.yml/badge.svg)](https://github.com/Ruh-Al-Tarikh/quickstart/actions/workflows/python-publish.yml) >>>>>>> e9fa83a9161933a6486eb1bee48501f812e0fdf8 From e3c64907583fc346a0fb730d67780d745d802473 Mon Sep 17 00:00:00 2001 From: Rizwan Date: Sun, 8 Feb 2026 21:33:47 +0530 Subject: [PATCH 21/22] Update README.md --- README.md | 253 ++++++++++++------------------------------------------ 1 file changed, 57 insertions(+), 196 deletions(-) diff --git a/README.md b/README.md index 882d123..31c76bb 100644 --- a/README.md +++ b/README.md @@ -1,215 +1,76 @@ +# πŸš€ QuickStart -<<<<<<< HEAD +[![CI](https://github.com/Ruh-Al-Tarikh/quickstart/actions/workflows/ci.yml/badge.svg)](https://github.com/Ruh-Al-Tarikh/quickstart/actions/workflows/ci.yml) +[![Python](https://img.shields.io/badge/python-3.8%2B-blue)](https://www.python.org/) +[![License](https://img.shields.io/badge/license-MIT-green)](LICENSE) -πŸš€ QuickStart +A minimal, developer-friendly **Python starter template** for building **Prefect workflows**, **CLI tools**, or **reusable libraries** β€” fast. -<<<<<<< HEAD +Perfect for automation, orchestration, experiments, and learning without boilerplate overload. -======= +--- -[![Upload Python Package](https://github.com/Ruh-Al-Tarikh/quickstart/actions/workflows/python-publish.yml/badge.svg)](https://github.com/Ruh-Al-Tarikh/quickstart/actions/workflows/python-publish.yml) ->>>>>>> e9fa83a9161933a6486eb1bee48501f812e0fdf8 +## ✨ What This Template Is For -# quickstart +This repo is designed to be flexible. You can use it as: -A minimal Python "quickstart" project template to get a small script or package up and running quickly. +- 🧭 **Prefect automation project** (flows, tasks, deployments) +- πŸ–₯️ **CLI tool** (`quickstart run`, `quickstart deploy`, etc.) +- πŸ“¦ **Python library** (importable, testable, publishable) -Badges -- Build / CI: ![CI](https://img.shields.io/badge/ci-none-lightgrey) -- Python versions: ![Python](https://img.shields.io/badge/python-3.8%2B-blue) -- License: ![License](https://img.shields.io/badge/license-MIT-green) +--- + +## πŸ“š Table of Contents -Table of contents - [About](#about) +- [Project Layout](#project-layout) - [Prerequisites](#prerequisites) -- [Quick start](#quick-start) +- [Quick Start](#quick-start) - [Usage](#usage) +- [Prefect Workflows](#prefect-workflows) +- [CLI Usage](#cli-usage) - [Development](#development) - [Testing](#testing) - [Linting & Formatting](#linting--formatting) -- [Packaging](#packaging) +- [Packaging & Publishing](#packaging--publishing) +- [Continuous Integration](#continuous-integration) - [Contributing](#contributing) - [License](#license) - [Contact](#contact) -About ------ -quickstart is a small Python starter project that demonstrates a clean layout and includes common development tasks (venv, install, run, tests, lint). Use it as a scaffold for CLI tools, libraries or small services. - -Prerequisites -------------- -- Python 3.8 or newer (3.11+ recommended) -- Git -- Recommended: pip, virtualenv (or use python -m venv) -- Optional tools: poetry / pipx / tox for alternative workflows - -Quick start ------------ -1. Clone the repo - - Unix / PowerShell - ```bash - git clone https://github.com/Ruh-Al-Tarikh/quickstart.git - cd quickstart - ``` - -2. Create a virtual environment and activate it - - macOS / Linux: - ```bash - python -m venv .venv - source .venv/bin/activate - ``` - - Windows PowerShell: - ```powershell - python -m venv .venv - .\.venv\Scripts\Activate.ps1 - ``` - -3. Install dependencies - - If using requirements.txt: - ```bash - pip install -r requirements.txt - ``` - - If the project uses editable install (package layout): - ```bash - pip install -e . - ``` - -Usage ------ -- Run the main script (example): - ```bash - python -m quickstart - ``` -- Or if a CLI entry point is defined (after pip install -e .): - ```bash - quickstart --help - ``` - -Example -------- -If the repository contains a small module with a function, a minimal usage example might look like: - -```python -from quickstart import say_hello - -def main(): - print(say_hello("World")) - -if __name__ == "__main__": - main() -``` - -Development ------------ -Install developer dependencies (example using requirements-dev.txt): -```bash -pip install -r requirements-dev.txt -``` - -Common dev tasks: -- Run the app locally: python -m quickstart -- Run a REPL with project on path: - ```bash - python -c "import quickstart; print(quickstart.__version__)" - ``` - -Testing -------- -This project uses pytest (adjust to your test runner). - -Install test deps: -```bash -pip install pytest -``` - -Run tests: -```bash -pytest -``` - -For coverage: -```bash -pip install coverage -coverage run -m pytest -coverage report -``` - -Linting & Formatting --------------------- -Recommended tools: -- black (formatter) -- ruff / flake8 (linter) -- isort (imports) - -Install and run: -```bash -pip install black ruff isort -black . -ruff . -isort . -``` - -Type checking -------------- -If you use type hints, run mypy: -```bash -pip install mypy -mypy quickstart -``` - -Packaging ---------- -If packaging as an installable Python package, include a pyproject.toml (PEP 621) or setup.cfg + setup.py. Example (build wheel and sdist): -```bash -pip install build -python -m build -``` - -Publishing ----------- -To publish to PyPI (example with twine): -```bash -pip install twine -python -m build -twine upload dist/* -``` - -<<<<<<< HEAD -# Built as a minimal, developer-friendly starter for learning and experimenting with Prefect automation workflows - -======= - -[![CircleCI](https://dl.circleci.com/status-badge/img/gh/Ruh-Al-Tarikh/pyray/tree/master.svg?style=svg)](https://dl.circleci.com/status-badge/redirect/gh/Ruh-Al-Tarikh/pyray/tree/master) ->>>>>>> 269e2ceec142f421a1b5e705bc06ae73d159e53c -======= -Continuous Integration ----------------------- -Add a GitHub Actions workflow (e.g., .github/workflows/ci.yml) to run tests, lint and build on push/PR. - -Contributing ------------- -Contributions are welcome. Please: -1. Create an issue to discuss major changes. -2. Open a branch: git checkout -b feat/your-feature -3. Make changes with tests. -4. Create a pull request. - -Use conventional commits or describe the change clearly in the PR. - -License -------- -This project is provided under the MIT License. See LICENSE file for details. - -Contact -------- -Created by Ruh-Al-Tarikh. For questions or help, open an issue or contact the maintainer via GitHub. - -Optional files to include in the repo -- requirements.txt -- requirements-dev.txt -- pyproject.toml / setup.cfg or setup.py -- .gitignore (.venv, __pycache__, .pytest_cache) -- tests/ (pytest tests) -- LICENSE (MIT) -- .github/workflows/ci.yml (CI pipeline) ->>>>>>> e9fa83a9161933a6486eb1bee48501f812e0fdf8 +--- + +## About + +**QuickStart** is a clean Python starter project that includes: + +- Virtual environments +- Editable installs +- Prefect-ready structure +- CLI entry points +- Testing, linting, formatting +- Packaging & CI support + +Use it to bootstrap: +- Prefect automation pipelines +- Internal developer tools +- Lightweight Python services +- Learning or prototyping projects + +--- + +## Project Layout + +```text +quickstart/ +β”œβ”€ quickstart/ +β”‚ β”œβ”€ __init__.py +β”‚ β”œβ”€ flows.py # Prefect flows +β”‚ β”œβ”€ tasks.py # Prefect tasks +β”‚ β”œβ”€ cli.py # CLI entry point +β”‚ └─ core.py # Shared library logic +β”œβ”€ tests/ +β”œβ”€ pyproject.toml +β”œβ”€ requirements.txt +β”œβ”€ requirements-dev.txt +└─ README.md From 4bed374ed80ff6cb5db2fc63feda84646cd2805f Mon Sep 17 00:00:00 2001 From: Rizwan Date: Sun, 8 Feb 2026 23:03:06 +0530 Subject: [PATCH 22/22] feat: improve getting started and logging examples --- 01_getting_started.py | 6 +++++- 02_logging.py | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/01_getting_started.py b/01_getting_started.py index 049b084..4771355 100644 --- a/01_getting_started.py +++ b/01_getting_started.py @@ -1,16 +1,20 @@ -from prefect import flow, task import random +from prefect import flow, task + + @task def get_customer_ids() -> list[str]: # Fetch customer IDs from a database or API return [f"customer{n}" for n in random.choices(range(100), k=50)] + @task def process_customer(customer_id: str) -> str: # Process a single customer return f"Processed {customer_id}" + @flow def main() -> list[str]: customer_ids = get_customer_ids() diff --git a/02_logging.py b/02_logging.py index 752a596..90bdf3f 100644 --- a/02_logging.py +++ b/02_logging.py @@ -1,6 +1,7 @@ +import random + from prefect import flow, task from prefect.logging import get_run_logger -import random @task @@ -8,6 +9,7 @@ def get_customer_ids() -> list[str]: # Fetch customer IDs from a database or API return [f"customer{n}" for n in random.choices(range(100), k=50)] + @task def process_customer(customer_id: str) -> str: # Process a single customer @@ -16,6 +18,7 @@ def process_customer(customer_id: str) -> str: logger.info(f"Processing customer {customer_id}") return f"Processed {customer_id}" + @flow def main() -> list[str]: customer_ids = get_customer_ids()