{"id":22325855,"url":"https://github.com/nathanielvarona/pritunl-client-github-action","last_synced_at":"2026-03-10T04:33:31.892Z","repository":{"id":160415124,"uuid":"635261527","full_name":"nathanielvarona/pritunl-client-github-action","owner":"nathanielvarona","description":"Establish automated secure Pritunl VPN connections with Pritunl Client in GitHub Actions, supporting OpenVPN and WireGuard.","archived":false,"fork":false,"pushed_at":"2024-07-29T05:46:41.000Z","size":568,"stargazers_count":20,"open_issues_count":1,"forks_count":6,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-18T16:43:17.894Z","etag":null,"topics":["cicd","devops","github-actions","hacktoberfest","openvpn","pritunl","pritunl-vpn","sre","vpn-client","vpn-server","wireguard"],"latest_commit_sha":null,"homepage":"https://github.com/marketplace/actions/pritunl-client-github-action","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nathanielvarona.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-05-02T10:14:12.000Z","updated_at":"2025-10-15T19:02:36.000Z","dependencies_parsed_at":"2024-06-08T09:28:07.795Z","dependency_job_id":"7c2757a5-b260-4caa-85a6-a3574ca37d0e","html_url":"https://github.com/nathanielvarona/pritunl-client-github-action","commit_stats":null,"previous_names":[],"tags_count":86,"template":false,"template_full_name":null,"purl":"pkg:github/nathanielvarona/pritunl-client-github-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathanielvarona%2Fpritunl-client-github-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathanielvarona%2Fpritunl-client-github-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathanielvarona%2Fpritunl-client-github-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathanielvarona%2Fpritunl-client-github-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nathanielvarona","download_url":"https://codeload.github.com/nathanielvarona/pritunl-client-github-action/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathanielvarona%2Fpritunl-client-github-action/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30324442,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T01:36:58.598Z","status":"online","status_checked_at":"2026-03-10T02:00:06.579Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cicd","devops","github-actions","hacktoberfest","openvpn","pritunl","pritunl-vpn","sre","vpn-client","vpn-server","wireguard"],"created_at":"2024-12-04T02:14:09.877Z","updated_at":"2026-03-10T04:33:31.872Z","avatar_url":"https://github.com/nathanielvarona.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pritunl Client GitHub Action\n\nEstablish automated secure [Pritunl VPN](https://pritunl.com/) connections with [Pritunl Client](https://client.pritunl.com/) in [GitHub Actions](https://github.com/features/actions), supporting [OpenVPN](https://openvpn.net/) and [WireGuard](https://www.wireguard.com/).\n\nSimplify your workflow, strengthen security, and safeguard access to corporate resources and infrastructure. This utility ensures secure connections, protecting your organization's valuable assets and data.\n\nStreamline tasks such as:\n\n* Securely distribute cross-platform, multi-architecture builds across teams, including corporate internal custom desktop and mobile applications, custom embedded software, firmware, server applications, and single-board computer operating system images.\n* Ensure secure access to corporate infrastructure private resources, including internal file storage solutions such as SharePoint, Samba, and NFS shares.\n* Automate end-to-end testing of internal and private systems, including applications and data interfaces.\n* Ensure data safety and resource availability with regular, periodic schedule operations for internal resources, including backups.\n\n## Action Diagram\n\n![Diagram](action.dio.svg)\n\n\u003e [!NOTE]\n\u003e _The [diagram](./action.dio.svg) above is an editable vector image using [drawio](https://www.drawio.com/) app._\n\n## Connection Tests\n\n[![Connection Tests - Basic](https://github.com/nathanielvarona/pritunl-client-github-action/actions/workflows/connection-tests-basic.yml/badge.svg?branch=main)](https://github.com/nathanielvarona/pritunl-client-github-action/actions/workflows/connection-tests-basic.yml?query=branch:main)\n[![Connection Tests - Complete](https://github.com/nathanielvarona/pritunl-client-github-action/actions/workflows/connection-tests-complete.yml/badge.svg?branch=main)](https://github.com/nathanielvarona/pritunl-client-github-action/actions/workflows/connection-tests-complete.yml?query=branch:main)\n[![Connection Tests - Manual Control](https://github.com/nathanielvarona/pritunl-client-github-action/actions/workflows/connection-tests-manual-control.yml/badge.svg?branch=main)](https://github.com/nathanielvarona/pritunl-client-github-action/actions/workflows/connection-tests-manual-control.yml?query=branch:main)\n[![Connection Tests - Multi Server Profile](https://github.com/nathanielvarona/pritunl-client-github-action/actions/workflows/connection-tests-multi-server-profile.yml/badge.svg?branch=main)](https://github.com/nathanielvarona/pritunl-client-github-action/actions/workflows/connection-tests-multi-server-profile.yml?query=branch:main)\n\n\n### Compatibility Matrix\n\nCheck the compatibility of various runners and VPN modes:\n\nRunner                                                                                                                   | OpenVPN                | WireGuard\n-------------------------------------------------------------------------------------------------------------------------|------------------------|------------------------\n`ubuntu-24.04` \u003csup\u003e[:warning: beta](https://github.com/actions/runner-images?tab=readme-ov-file#available-images)\u003c/sup\u003e | :white_check_mark: Yes | :construction: Unstable\n`ubuntu-22.04`                                                                                                           | :white_check_mark: Yes | :white_check_mark: Yes\n`ubuntu-20.04`                                                                                                           | :white_check_mark: Yes | :white_check_mark: Yes\n`macos-14` \u003csup\u003e[arm64](#supported-arm64-architecture-runners)\u003c/sup\u003e                                                     | :white_check_mark: Yes | :construction: Unstable\n`macos-13`                                                                                                               | :white_check_mark: Yes | :white_check_mark: Yes\n`macos-12`                                                                                                               | :white_check_mark: Yes | :white_check_mark: Yes\n`windows-2022`                                                                                                           | :white_check_mark: Yes | :white_check_mark: Yes\n`windows-2019`                                                                                                           | :white_check_mark: Yes | :white_check_mark: Yes\n\n\u003e [!TIP]\n\u003e * See  the workflow file [connection-tests-complete.yml](./.github/workflows/connection-tests-complete.yml) for a complete tests matrix example.\n\u003e * View the comprehensive connection tests matrix on our [GitHub Actions](https://github.com/nathanielvarona/pritunl-client-github-action/actions) page for more details.\n\n### Confirmed Compatibility\nWe have confirmed compatibility with [Pritunl v1.32.3805.95](https://github.com/pritunl/pritunl/releases/tag/1.32.3805.95) and later versions through rigorous testing. Our server clusters are deployed across multiple cloud platforms, including [AWS](https://aws.amazon.com/), [Azure](https://azure.microsoft.com/) and [Linode (Akamai)](https://www.linode.com/).\n\n\n## Usage\n\nConfigure the **Pritunl Client GitHub Action** using YAML's declarative syntax, making it easy to integrate and manage your VPN connections in a clear and concise manner. Define your configuration in a simple and human-readable YAML file, and let the action handle the rest.\n\n### Inputs\n\nProvides input parameters for the **Pritunl Client GitHub Action**, allowing users to customize the setup process and connection settings.\n\n```yaml\n- name: Pritunl Client GitHub Action\n  uses: nathanielvarona/pritunl-client-github-action@v1\n  with:\n    profile-file: ''\n      # REQUIRED: Pritunl Profile File (Base64 text format)\n      # Description: Provide the Base64-encoded Pritunl profile file contents.\n\n    profile-pin: ''\n      # OPTIONAL: Profile Pin (Numerical values, default: no pin)\n      # Description: Specify a numerical pin for the profile (if required).\n\n    profile-server: ''\n      # OPTIONAL: Profile Server (Single string or comma-separated for multiple names, default: first or only server in the profile)\n      # Description: Specify the profile server(s) to connect to.\n\n    vpn-mode: ''\n      # OPTIONAL: VPN Connection Mode (choices: 'ovpn' for OpenVPN, or 'wg' for WireGuard, default: 'ovpn')\n      # Description: Select the VPN connection mode.\n\n    client-version: ''\n      # OPTIONAL: Pritunl Client Version (Numerical dot-separated identifiers, default: latest version from Package Manager)\n      # Description: Specify the Pritunl client version to use.\n\n    start-connection: ''\n      # OPTIONAL: Start the Connection (Boolean, default: true)\n      # Description: Set to 'false' to prevent the connection from starting automatically.\n\n    ready-profile-timeout: ''\n      # OPTIONAL: Ready Profile Timeout (Natural Numbers, unit of time in seconds, default: 3)\n      # Description: Set the timeout for the profile to become ready.\n\n    established-connection-timeout: ''\n      # OPTIONAL: Established Connection Timeout (Natural Numbers, unit of time in seconds, default: 30)\n      # Description: Set the timeout for the connection to become established.\n\n    concealed-outputs: ''\n      # OPTIONAL: Concealed Outputs (Boolean, default: true)\n      # Description: Set to 'false' to reveal sensitive output information.\n```\n\n\u003e [!IMPORTANT]\n\u003e For the `profile-file` input, ensure you convert the `tar` archive file format to `base64` text file format. Refer to the [Working with Pritunl Profile File](#working-with-pritunl-profile-file) subsection for guidance.\n\n### Outputs\n\nOutputs essential variables from **Pritunl Client** setup, supporting and extending automation, integration, and audit processes.\n\n`client-id` — a unique string identifier generated during the profile setup process.\n\n* Example:\n  ```text\n  6p5yiqbkjbktkrz5\n  ```\n\n`client-ids` — a JSON array containing all client IDs and names in the profile, with each entry represented as a key-value pair.\n\n* Format _(json elements)_:\n  ```json\n  {\"id\":\"client-id\",\"name\":\"profile-name (server-name)\"}\n  ```\n* Example _(single entry)_:\n  ```json\n  [{\"id\":\"6p5yiqbkjbktkrz5\",\"name\":\"gha-automator-dev (dev-team)\"}]\n  ```\n* Example _(multiple entries)_:\n  ```json\n  [{\"id\":\"kp4kx4zbcqpsqkbk\",\"name\":\"gha-automator-qa2 (dev-team)\"},{\"id\":\"rsy6npzw5mwryge2\",\"name\":\"gha-automator-qa2 (qa-team)\"}]\n  ```\n\n#### Retrieving Step Outputs\n\n* To retrieve the `client-id`:\n  ```\n  ${{ steps.pritunl-connection.outputs.client-id }}\n  ```\n\n* To retrieve the `client-ids`:\n  ```\n  ${{ steps.pritunl-connection.outputs.client-ids }}\n  ```\n\n\u003e [!NOTE]\n\u003e _The `pritunl-connection` refers to the **Setup Step ID**. Make sure to replace it with the actual step ID in your workflow._\n\n\u003e [!TIP]\n\u003e * See \"[Manual Connection Control](#manual-connection-control)\" for an example of using `client_id`.\n\u003e * See \"[Specifying Server or Servers in a Multi-Server Profile](#specifying-server-or-servers-in-a-multi-server-profile)\" for examples of using `client_ids`.\n\u003e * See \"[Controlling Step Outputs Visibility in GitHub Actions Log](#controlling-step-outputs-visibility-in-github-actions-log)\" by setting `concealed-outputs`.\n\n\n\n## Examples\n\nProvided that `profile-file` is available, we have the flexibility to generate multiple scenarios.\n\n### Minimum Working Configuration\n\nEstablish a VPN connection with just a few lines of code! Simply set the required `profile-file` input, and let the action handle the rest.\n\n```yml\n- name: Setup Pritunl Profile and Start VPN Connection\n  uses: nathanielvarona/pritunl-client-github-action@v1\n  with:\n    profile-file: ${{ secrets.PRITUNL_PROFILE_FILE }}\n```\n\n\u003e [!TIP]\n\u003e See a working example of this action in our [connection-tests-basic.yml](./.github/workflows/connection-tests-basic.yml). This example demonstrates a basic setup and connection test.\n\n### Authenticate with PIN or Password\n\nIf your VPN connection requires authentication, use the `profile-pin` input to provide a PIN or password.\n\n```yml\n- name: Setup Pritunl Profile and Start VPN Connection\n  uses: nathanielvarona/pritunl-client-github-action@v1\n  with:\n    profile-file: ${{ secrets.PRITUNL_PROFILE_FILE }}\n    profile-pin: ${{ secrets.PRITUNL_PROFILE_PIN }}\n```\n\n### Specifying Server or Servers in a Multi-Server Profile\n\nSelect one or more servers by specifying their names. You can use:\n\n* Short name: A concise name (e.g., `dev-team`)\n* Short name with multiple servers: Separate multiple short names with commas (e.g., `dev-team, qa-team`)\n* Full profile name: A complete name with the profile and server (e.g., `gha-automator-qa1 (dev-team)`)\n* Full profile name with multiple servers: Separate multiple full profile names with commas (e.g., `gha-automator-qa1 (dev-team), gha-automator-qa1 (qa-team)`)\n\n```yml\n- name: Setup Pritunl Profile and Start VPN Connection\n  uses: nathanielvarona/pritunl-client-github-action@v1\n  with:\n    profile-file: ${{ secrets.PRITUNL_PROFILE_FILE }}\n\n    # Specify a single server using its short name\n    profile-server: dev-team\n\n    # Connect to multiple servers using short names\n    # profile-server: dev-team, qa-team\n\n    # Use a full profile name to specify a single server\n    # profile-server: gha-automator-qa1 (dev-team)\n\n    # Use full profile names to specify multiple servers\n    # profile-server: gha-automator-qa1 (dev-team), gha-automator-qa1 (qa-team)\n```\n\n\u003e [!TIP]\n\u003e See an example of connecting to multiple servers in our [connection-tests-multi-server-profile.yml](./.github/workflows/connection-tests-multi-server-profile.yml) file. This workflow demonstrates how to configure and test connections to multiple servers using a single profile.\n\n### Specify Client Version\n\nUse a specific version of the Pritunl client.\n\n```yml\n- name: Setup Pritunl Profile and Start VPN Connection\n  uses: nathanielvarona/pritunl-client-github-action@v1\n  with:\n    profile-file: ${{ secrets.PRITUNL_PROFILE_FILE }}\n    client-version: 1.3.3883.60\n```\n\n### Specify VPN Mode\n\nUse a specific VPN mode (e.g., **WireGuard**).\n\n```yml\n- name: Setup Pritunl Profile and Start VPN Connection\n  uses: nathanielvarona/pritunl-client-github-action@v1\n  with:\n    profile-file: ${{ secrets.PRITUNL_PROFILE_FILE }}\n    vpn-mode: wg\n```\n\n### Manual Connection Control\n\nDemonstrates manual control over the VPN connection, including starting, stopping, and checking the connection status.\n\n```yml\n# Set up Pritunl profile and store client ID for later use\n- name: Setup Pritunl Profile\n  id: pritunl-connection # A `Setup Step ID` has been added as a reference identifier for the output `client-id`.\n  uses: nathanielvarona/pritunl-client-github-action@v1\n  with:\n    profile-file: ${{ secrets.PRITUNL_PROFILE_FILE }}\n    start-connection: false # Do not establish a connection in this step.\n\n# Start VPN connection using stored client ID and password (use stored secret if available, otherwise use an empty string)\n- name: Start VPN Connection Manually\n  shell: bash\n  run: |\n    pritunl-client start ${{ steps.pritunl-connection.outputs.client-id }} \\\n      --password ${{ secrets.PRITUNL_PROFILE_PIN || '' }}\n\n    sleep 10 # Wait for 10 seconds to allow the connection to establish\n\n# Display VPN connection status\n- name: Display VPN Connection Status Manually\n  shell: bash\n  run: |\n    pritunl-client list --json | jq 'sort_by(.name) | .[0] | { \"Profile Name\": .name, \"Client Address\": .client_address }'\n\n# Insert your CI/CD core logic here\n- name: Your CI/CD Core Logic Here\n\n# Stop VPN connection using stored client ID (always run, even on failure)\n- name: Stop VPN Connection Manually\n  if: ${{ always() }}\n  shell: bash\n  run: |\n    pritunl-client stop ${{ steps.pritunl-connection.outputs.client-id }}\n```\n\n\u003e [!TIP]\n\u003e See a working example of manual connection control in our [connection-tests-manual-control.yml](./.github/workflows/connection-tests-manual-control.yml) for the readme example manual test.\n\n### Controlling Step Outputs Visibility in GitHub Actions Log\n\nBy default, step outputs are hidden in the GitHub Actions log to keep it clean and clutter-free. To reveal step outputs, set `concealed-outputs` to `false`.\n\n```yml\n- name: Setup Pritunl Profile and Start VPN Connection\n  uses: nathanielvarona/pritunl-client-github-action@v1\n  with:\n    profile-file: ${{ secrets.PRITUNL_PROFILE_FILE }}\n    concealed-outputs: false # Set to false to reveal step outputs in the GitHub Actions log\n```\n\n## Working with Pritunl Profile File\n\nThe Pritunl Client CLI requires a specific file format, and GitHub has limitations on uploading binary files. To store the Pritunl Profile in GitHub Secrets, we need to convert the `tar` archive file to a `base64` text file format.\n\n### Four Easy Steps\n\n#### 1. Obtain the Profile File\n\nDownload the `Profile File` from the User `Profile Page` or obtain it from your `Infrastructure Team`. If you receive a `tar` file, proceed to `Step 2`.\n\n```bash\ncurl -sSL https://vpn.domain.tld/key/a1b2c3d4e5.tar -o ./pritunl.profile.tar\n```\n\n#### 2. Convert to Base64\n\nConvert the Pritunl Profile File from `tar` archive file format to `base64` text file format.\n\n```bash\nbase64 --wrap 0 ./pritunl.profile.tar \u003e ./pritunl.profile.base64\n```\n\n#### 3. Copy the Base64-encoded Data\n\n##### CLI (Command-Line Interface)\n\n* **macOS** (using `pbcopy`):\n  ```bash\n  cat ./pritunl.profile.base64 | pbcopy\n  ```\n* **Linux** or **WSL**:\n  - Using `xclip`:\n    ```bash\n    cat ./pritunl.profile.base64 | xclip -selection clipboard\n    ```\n  - Using `xsel`:\n    ```bash\n    cat ./pritunl.profile.base64 | xsel --clipboard --input\n    ```\n* **Windows** (using `PowerShell`):\n  ```powershell\n  Get-Content .\\pritunl.profile.base64 | Set-Clipboard\n  ```\n\n##### GUI (Graphical User Interface)\n\n1. Open the file `./pritunl.profile.base64` in a code editor (e.g., `code` or `vim`) and select all the text (or use the keyboard shortcut `Ctrl+A` or `Cmd+A`).\n2. Right-click and select `\"Copy\"` (or use the keyboard shortcut `Ctrl+C` or `Cmd+C`).\n\n#### 4. Create a GitHub Action Secret\n\nCreate a GitHub Action Secret (e.g., `PRITUNL_PROFILE_FILE`) and paste the entire `base64` text data as the secret value.\n\n### Pro Tip!\n\n\u003cdetails\u003e\n  \u003csummary\u003eReveal the Magic: One-liner Shorthand Script\u003c/summary\u003e\n\n  Simplify the first three steps with this handy one-liner invocation script:\n\n  ```bash\n  # Define a private function to read file data or download from URL\n  # This function is used internally to fetch the profile data\n  __get_profile_data() {\n    # Check if the input is a file\n    if [ -f \"$1\" ]; then\n      # If it's a file, read its contents\n      cat \"$1\"\n    else\n      # If it's not a file, assume it's a URL and download the data\n      curl -sSL \"$1\"\n    fi\n  }\n\n  # Define a public function to encode a profile and copy it to the clipboard\n  # This function takes a file path or URL as input, encodes the data to base64,\n  # and copies it to the clipboard\n  encode_profile_and_copy() {\n    # Check if a file path or URL is provided as an argument\n    if [ $# -eq 0 ]; then\n      # If no argument is provided, print an error message and usage instructions\n      echo \"Error: No argument provided\"\n      echo \"Usage: $(basename \"$0\") \u003curl or file path\u003e\"\n      echo \"Examples:\"\n      echo \"  Using a URL: $(basename \"$0\") https://vpn.domain.tld/key/a1b2c3d4e5.tar\"\n      echo \"  Using a local file path: $(basename \"$0\") ./pritunl.profile.tar\"\n      return 1\n    fi\n\n    # Get the profile data using the private function\n    __get_profile_data \"$1\" |\n    # Encode the data to base64\n    base64 --wrap 0 |\n    # Copy the encoded data to the clipboard\n    {\n      # Use pbcopy for macOS\n      pbcopy\n    } || {\n      # Use xclip or xsel for Linux or WSL\n      xclip -selection clipboard || xsel --clipboard --input\n    }\n  }\n  ```\n\n  _Check out this script ([pritunl-profile-encode.sh](https://github.com/nathanielvarona/dotfiles/blob/master/.scripts/source/pritunl-profile-encode.sh)) from [nathanielvarona/dotfiles](https://github.com/nathanielvarona/dotfiles) for an example of how to implement one-liner shorthand script._\n\u003c/details\u003e\n\n## Supported Arm64 Architecture Runners\n\nSupports GitHub Actions runners with Arm64 architecture, enabling users to run workflows on Arm64-based systems.\n\n\u003e [!TIP]\n\u003e See an example of Arm64 support in our [connection-tests-basic.yml](./.github/workflows/connection-tests-basic.yml) file.\n\n\u003e [!WARNING]\n\u003e \u003csup\u003earm64\u003c/sup\u003e — While most runners are free to use in public repositories, certain Arm64 runners may incur usage charges to your account.\n\nFor details on runner billing, please refer to the \"[About billing for GitHub Actions](https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions)\" documentation.\n\n## Noticeable Issues and Solutions\n\n### Pritunl Client Installation\n  - **Affected Runners:** **Ubuntu (Linux) Runners** using the `Apt Repository` for installation.\n\n  - **Related Issues:** [#209](https://github.com/nathanielvarona/pritunl-client-github-action/issues/209), [#206](https://github.com/nathanielvarona/pritunl-client-github-action/issues/206)\n\n  - **Problems:**\n    - Occasionally, updates to the Pritunl Client package in the Ubuntu repository can cause installation issues.\n    - Sometimes, the GitHub Actions Runner images have problems with their internal package caches, leading to failed installations.\n\n  - **Solutions:**\n    - Specify the desired Pritunl Client version using the `client-version` input in your GitHub Action. This will download the client directly from the official [Pritunl Client GitHub Releases](https://github.com/pritunl/pritunl-client-electron/releases) page, ensuring you get the exact version you need.\n\n      \u003e NOTE: When specifying the `client-version` input, please use the version number without the 'v' prefix. For example, use 1.3.3883.60 instead of v1.3.3883.60.\n\n      _Example:_\n\n      ```yml\n      - uses: nathanielvarona/pritunl-client-github-action@v1\n        ...\n        with:\n          ...\n          client-version: 1.3.3883.60\n      ```\n\n## Contributing\n\nThank you for your interest in contributing to our project! We appreciate your help in making our project better.\n\n### Fork and Pull Requests\n\n1. Fork our repository to your own GitHub account.\n2. Make changes, additions, or fixes on your forked repository.\n3. Send a pull request to our original repository.\n\n### Rebasing and Squashing Commits\n\n1. Rebase your branch on top of the latest main branch before submitting a pull request.\n2. Squash your commits into a single, meaningful commit.\n\n### Modify and Test Your Fork\n\n**Modify the main files:**\n\n* [action.yml](./action.yml) — GitHub Action Metadata File and Inline Entrypoint Script for `pritunl-client.sh`.\n* [pritunl-client.sh](./pritunl-client.sh) — Pritunl Client Script File, the GitHub Action Logic.\n\n\n**Test your changes thoroughly:**\n\nEnsure your contributions are reliable by testing your fork using the same GitHub Actions workflows we use for our project. Please update or add new test workflows in the [.github/workflows/](./.github/workflows)`connection-tests-*.yml` files as needed to cover your changes.\n\n#### Use Your Fork\n\nOnce you've modified and tested your fork, you can use it in your own projects. Here's an example usage:\n\n```yml\n- name: Pritunl Client GitHub Action (Development Fork)\n  uses: \u003cYOUR GITHUB USERNAME\u003e/pritunl-client-github-action@\u003cYOUR FEATURE BRANCH\u003e\n  with:\n    profile-file: ${{ secrets.PRITUNL_PROFILE_FILE }}\n    ...\n    \u003cYOUR FEATURE INPUTS\u003e\n    ...\n```\n\n### Documentation\n\nWhen contributing to our project, please make sure to document your features or changes in the following ways:\n\n* Update the [README.md](./README.md) file to include information about your feature or change.\n* Add comments to your code to explain what it does and how it works.\n* If necessary, create a new documentation file or update an existing one to provide more detailed information about your feature or change.\n\n### Additional Guidelines\n\n* Be respectful and considerate of others in our community.\n* Follow the GitHub Community Guidelines and Anti-Harassment Policy.\n* Keep your contributions aligned with our project's goals and scope.\n\n### What to Expect\n\n* Our maintainers will review your pull request and provide feedback.\n* We may request changes or improvements before merging your pull request.\n* Once approved, your contribution will be merged and credited to you.\n\nThank you again for your contribution! If you have any questions or concerns, feel free to reach out to us.\n\n## Star History\n\n\u003ca href=\"https://star-history.com/#nathanielvarona/pritunl-client-github-action\u0026Date\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=nathanielvarona/pritunl-client-github-action\u0026type=Date\u0026theme=dark\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=nathanielvarona/pritunl-client-github-action\u0026type=Date\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=nathanielvarona/pritunl-client-github-action\u0026type=Date\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnathanielvarona%2Fpritunl-client-github-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnathanielvarona%2Fpritunl-client-github-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnathanielvarona%2Fpritunl-client-github-action/lists"}