{"id":19435529,"url":"https://github.com/cssnr/stack-deploy-action","last_synced_at":"2025-04-24T21:30:36.609Z","repository":{"id":191081174,"uuid":"683870062","full_name":"cssnr/stack-deploy-action","owner":"cssnr","description":"Docker Stack Deploy GitHub Action","archived":false,"fork":false,"pushed_at":"2024-07-27T01:15:39.000Z","size":45,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-07-28T01:35:11.595Z","etag":null,"topics":["actions"],"latest_commit_sha":null,"homepage":"https://cssnr.github.io","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cssnr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2023-08-28T00:24:34.000Z","updated_at":"2024-07-27T01:13:43.000Z","dependencies_parsed_at":"2023-12-23T08:19:57.593Z","dependency_job_id":"42272548-7980-47d8-bdd5-fa42c54522f6","html_url":"https://github.com/cssnr/stack-deploy-action","commit_stats":null,"previous_names":["hosted-domains/stack-deploy-action","cssnr/stack-deploy-action"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cssnr%2Fstack-deploy-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cssnr%2Fstack-deploy-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cssnr%2Fstack-deploy-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cssnr%2Fstack-deploy-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cssnr","download_url":"https://codeload.github.com/cssnr/stack-deploy-action/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223968402,"owners_count":17233445,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["actions"],"created_at":"2024-11-10T15:06:50.400Z","updated_at":"2025-04-24T21:30:36.601Z","avatar_url":"https://github.com/cssnr.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![GitHub Tag Major](https://img.shields.io/github/v/tag/cssnr/stack-deploy-action?sort=semver\u0026filter=!v*.*\u0026logo=git\u0026logoColor=white\u0026labelColor=585858\u0026label=%20)](https://github.com/cssnr/stack-deploy-action/tags)\n[![GitHub Tag Minor](https://img.shields.io/github/v/tag/cssnr/stack-deploy-action?sort=semver\u0026filter=!v*.*.*\u0026logo=git\u0026logoColor=white\u0026labelColor=585858\u0026label=%20)](https://github.com/cssnr/stack-deploy-action/tags)\n[![GitHub Release Version](https://img.shields.io/github/v/release/cssnr/stack-deploy-action?logo=git\u0026logoColor=white\u0026labelColor=585858\u0026label=%20)](https://github.com/cssnr/stack-deploy-action/releases/latest)\n[![Workflow Release](https://img.shields.io/github/actions/workflow/status/cssnr/stack-deploy-action/release.yaml?logo=github\u0026label=release)](https://github.com/cssnr/stack-deploy-action/actions/workflows/release.yaml)\n[![Workflow Test](https://img.shields.io/github/actions/workflow/status/cssnr/stack-deploy-action/test.yaml?logo=github\u0026label=test)](https://github.com/cssnr/stack-deploy-action/actions/workflows/test.yaml)\n[![Workflow Lint](https://img.shields.io/github/actions/workflow/status/cssnr/stack-deploy-action/lint.yaml?logo=github\u0026label=lint)](https://github.com/cssnr/stack-deploy-action/actions/workflows/lint.yaml)\n[![GitHub Last Commit](https://img.shields.io/github/last-commit/cssnr/stack-deploy-action?logo=github\u0026label=updated)](https://github.com/cssnr/stack-deploy-action/graphs/commit-activity)\n[![Codeberg Last Commit](https://img.shields.io/gitea/last-commit/cssnr/stack-deploy-action/master?gitea_url=https%3A%2F%2Fcodeberg.org%2F\u0026logo=codeberg\u0026logoColor=white\u0026label=updated)](https://codeberg.org/cssnr/stack-deploy-action)\n[![GitHub Top Language](https://img.shields.io/github/languages/top/cssnr/stack-deploy-action?logo=sharp\u0026logoColor=white)](https://github.com/cssnr/stack-deploy-action)\n[![GitHub repo size](https://img.shields.io/github/repo-size/cssnr/stack-deploy-action?logo=bookstack\u0026logoColor=white\u0026label=size)](https://github.com/cssnr/stack-deploy-action)\n[![GitHub Discussions](https://img.shields.io/github/discussions/cssnr/stack-deploy-action)](https://github.com/cssnr/stack-deploy-action/discussions)\n[![GitHub Forks](https://img.shields.io/github/forks/cssnr/stack-deploy-action?style=flat\u0026logo=github)](https://github.com/cssnr/stack-deploy-action/forks)\n[![GitHub Repo Stars](https://img.shields.io/github/stars/cssnr/stack-deploy-action?style=flat\u0026logo=github)](https://github.com/cssnr/stack-deploy-action/stargazers)\n[![GitHub Org Stars](https://img.shields.io/github/stars/cssnr?style=flat\u0026logo=github\u0026label=org%20stars)](https://cssnr.github.io/)\n[![Discord](https://img.shields.io/discord/899171661457293343?logo=discord\u0026logoColor=white\u0026label=discord\u0026color=7289da)](https://discord.gg/wXy6m2X8wY)\n\n# Docker Stack Deploy Action\n\n- [Inputs](#Inputs)\n- [Examples](#Examples)\n- [Tags](#Tags)\n- [Features](#Features)\n- [Support](#Support)\n- [Contributing](#Contributing)\n\n\u003e [!TIP]  \n\u003e Now works with Docker **Compose. No\u0026nbsp;Swarm\u0026nbsp;Required!**  \n\u003e ▶️ Set `mode: compose`. See [Inputs](#Inputs) for more details...\n\nThis action deploys a docker stack from a compose file to a remote docker host using SSH Password or Key File Authentication.\nYou can also optionally authenticate against a private registry using a username and password.\n\nThis action uses a remote docker context to deploy the stack from the working directory allowing you to easily prepare the workspace for deployment.\n\n**Portainer Users:** You can deploy directly to Portainer with: [cssnr/portainer-stack-deploy-action](https://github.com/cssnr/portainer-stack-deploy-action)\n\n\u003e [!NOTE]  \n\u003e Please submit a [Feature Request](https://github.com/cssnr/stack-deploy-action/discussions/categories/feature-requests)\n\u003e for new features or [Open an Issue](https://github.com/cssnr/stack-deploy-action/issues) if you find any bugs.\n\nFor more details see [action.yaml](action.yaml) and [src/main.sh](src/main.sh).\n\n## Inputs\n\n| Input\u0026nbsp;Name      | Is\u0026nbsp;Required | Default\u0026nbsp;Value                  | Input\u0026nbsp;Description                    |\n| :------------------- | :--------------: | :---------------------------------- | :---------------------------------------- |\n| `name`               |     **Yes**      | -                                   | Docker Stack/Project Name \\*              |\n| `file`               |        -         | `docker-compose.yaml`               | Docker Stack/Compose File                 |\n| `mode`**¹**          |        -         | `swarm`                             | Deploy Mode: [`swarm`, `compose`] \\*      |\n| `args`**¹**          |        -         | `--remove-orphans --force-recreate` | Additional Arguments for **Compose** \\*   |\n| `host`               |     **Yes**      | -                                   | Remote Docker Hostname or IP \\*           |\n| `port`               |        -         | `22`                                | Remote Docker Port                        |\n| `user`               |     **Yes**      | -                                   | Remote Docker Username                    |\n| `pass`               |   or `ssh_key`   | -                                   | Remote Docker Password \\*                 |\n| `ssh_key`            |    or `pass`     | -                                   | Remote SSH Key File \\*                    |\n| `env_file`           |        -         | -                                   | Docker Environment File \\*                |\n| `detach`**²**        |        -         | `true`                              | Detach Flag, `false`, to disable \\*       |\n| `prune`**²**         |        -         | `false`                             | Prune Flag, `true`, to enable             |\n| `resolve_image`**²** |        -         | `always`                            | Resolve [`always`, `changed`, `never`] \\* |\n| `registry_auth`**²** |        -         | -                                   | Enable Registry Authentication \\*         |\n| `registry_host`      |        -         | -                                   | Registry Authentication Host \\*           |\n| `registry_user`      |        -         | -                                   | Registry Authentication Username \\*       |\n| `registry_pass`      |        -         | -                                   | Registry Authentication Password \\*       |\n| `summary`            |        -         | `true`                              | Add Job Summary \\*                        |\n\n\u003e **¹** Compose Only, view the [Docs](https://docs.docker.com/reference/cli/docker/compose/up/).  \n\u003e **²** Swarm Only, view the [Docs](https://docs.docker.com/reference/cli/docker/stack/deploy/).  \n\u003e \\* More details below...\n\n\u003cdetails\u003e\u003csummary\u003e📟 Click Here to see how the deployment command is generated\u003c/summary\u003e\n\n```shell\nif [[ \"${INPUT_MODE}\" == \"swarm\" ]];then\n    DEPLOY_TYPE=\"Swarm\"\n    COMMAND=(\"docker\" \"stack\" \"deploy\" \"-c\" \"${INPUT_FILE}\" \"${EXTRA_ARGS[@]}\" \"${INPUT_NAME}\")\nelse\n    DEPLOY_TYPE=\"Compose\"\n    COMMAND=(\"docker\" \"compose\" \"-f\" \"${INPUT_FILE}\" \"-p\" \"${INPUT_NAME}\" \"up\" \"-d\" \"-y\" \"${EXTRA_ARGS[@]}\")\nfi\n```\n\n\u003c/details\u003e\n\n**name:** Stack name for Swarm and project name for Compose.\n\n**mode:** _Compose only._ Set this to `compose` to use `compose up` instead of `stack deploy` for non-swarm hosts.\n\n**args:** _Compose only._ Compose arguments to pass to the `compose up` command. Only used for `mode: compose` deployments.\nThe `detach` flag defaults to false for compose. With no args the default is `--remove-orphans --force-recreate`.\nUse an empty string to override. For more details, see the compose\n[docs](https://docs.docker.com/reference/cli/docker/compose/up/).\n\n**host:** The hostname or IP address of the remote docker server to deploy too.\nIf your hostname is behind a proxy like Cloudflare you will need to use the IP address.\n\n**pass/ssh_key:** You must provide either a `pass` or `ssh_key`, not both.\n\n**env_file:** Variables in this file are exported before running stack deploy.\nTo use a docker `env_file` specify it in your compose file and make it available in a previous step.\nIf you need compose file templating this can also be done in a previous step.\nIf using `mode: compose` you can also add the `compose_arg: --env-file stringArray`.\n\n**detach:** _Swarm only._ Set this to `false` to not exit immediately and wait for the services to converge.\nThis will generate extra output in the logs and is useful for debugging deployments.\nDefaults to `false` in `mode: compose`.\n\n**resolve_image:** _Swarm only._ When the default `always` is used, this argument is omitted.\n\n**registry_auth:** _Swarm only._ Set to `true` to deploy with `--with-registry-auth`.\n\n**registry_host:** To run `docker login` on another registry. Example: `ghcr.io`.\n\n**registry_user/registry_pass:** Required to run `docker login` before stack deploy.\n\n**summary:** Write a Summary for the job. To disable this set to `false`.\n\nTo view a workflow run, click on a recent [Test](https://github.com/cssnr/stack-deploy-action/actions/workflows/test.yaml) job _(requires login)_.\n\n\u003cdetails\u003e\u003csummary\u003e👀 View Example Successful ✔️ Job Summary\u003c/summary\u003e\n\n---\n\n🚀 Swarm Stack `test_stack-deploy` Successfully Deployed.\n\n```text\ndocker stack deploy -c docker-compose.yaml --detach=false --resolve-image=changed test_stack-deploy\n```\n\n\u003cdetails\u003e\u003csummary\u003eResults\u003c/summary\u003e\n\n```text\nUpdating service test_stack-deploy_alpine (id: tdk8v42m0rvp9hz4rbfrtszb6)\n1/1:\noverall progress: 0 out of 1 tasks\noverall progress: 1 out of 1 tasks\nverify: Waiting 5 seconds to verify that tasks are stable...\nverify: Waiting 4 seconds to verify that tasks are stable...\nverify: Waiting 3 seconds to verify that tasks are stable...\nverify: Waiting 2 seconds to verify that tasks are stable...\nverify: Waiting 1 seconds to verify that tasks are stable...\nverify: Service tdk8v42m0rvp9hz4rbfrtszb6 converged\n```\n\n\u003c/details\u003e\n\n---\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e👀 View Example Failure ❌ Job Summary\u003c/summary\u003e\n\n---\n\n⛔ Swarm Stack `test_stack-deploy` Failed to Deploy!\n\n```text\ndocker stack deploy -c docker-compose.yaml --detach=false --resolve-image=changed test_stack-deploy\n```\n\n\u003cdetails open\u003e\u003csummary\u003eErrors\u003c/summary\u003e\n\n```text\nCreating network test_stack-deploy_default\nfailed to create network test_stack-deploy_default: Error response from daemon: network with name test_stack-deploy_default already exists\n```\n\n\u003c/details\u003e\n\n---\n\n\u003c/details\u003e\n\n```yaml\n- name: 'Stack Deploy'\n  uses: cssnr/stack-deploy-action@v1\n  with:\n    name: 'stack-name'\n    file: 'docker-compose-swarm.yaml'\n    host: ${{ secrets.DOCKER_HOST }}\n    port: ${{ secrets.DOCKER_PORT }}\n    user: ${{ secrets.DOCKER_USER }}\n    pass: ${{ secrets.DOCKER_PASS }} # not needed with ssh_key\n    ssh_key: ${{ secrets.DOCKER_SSH_KEY }} # not needed with pass\n```\n\n## Examples\n\n💡 _Click on an example heading to expand or collapse the example._\n\n\u003cdetails open\u003e\u003csummary\u003eWith Password, docker login and --with-registry-auth\u003c/summary\u003e\n\n```yaml\n- name: 'Stack Deploy'\n  uses: cssnr/stack-deploy-action@v1\n  with:\n    name: 'stack-name'\n    file: 'docker-compose-swarm.yaml'\n    host: ${{ secrets.DOCKER_HOST }}\n    port: ${{ secrets.DOCKER_PORT }}\n    user: ${{ secrets.DOCKER_USER }}\n    pass: ${{ secrets.DOCKER_PASS }}\n    registry_host: 'ghcr.io'\n    registry_user: ${{ vars.GHCR_USER }}\n    registry_pass: ${{ secrets.GHCR_PASS }}\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eWith SSH Key, --prune, --detach=false and --resolve-image=changed\u003c/summary\u003e\n\n```yaml\n- name: 'Stack Deploy'\n  uses: cssnr/stack-deploy-action@v1\n  with:\n    name: 'stack-name'\n    file: 'docker-compose-swarm.yaml'\n    host: ${{ secrets.DOCKER_HOST }}\n    port: ${{ secrets.DOCKER_PORT }}\n    user: ${{ secrets.DOCKER_USER }}\n    ssh_key: ${{ secrets.DOCKER_SSH_KEY }}\n    detach: false\n    prune: true\n    resolve_image: 'changed'\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eWith All Swarm Inputs\u003c/summary\u003e\n\n```yaml\n- name: 'Stack Deploy'\n  uses: cssnr/stack-deploy-action@v1\n  with:\n    name: 'stack-name'\n    file: 'docker-compose-swarm.yaml'\n    host: ${{ secrets.DOCKER_HOST }}\n    port: ${{ secrets.DOCKER_PORT }}\n    user: ${{ secrets.DOCKER_USER }}\n    pass: ${{ secrets.DOCKER_PASS }} # not needed with ssh_key\n    ssh_key: ${{ secrets.DOCKER_SSH_KEY }} # not needed with pass\n    env_file: 'stack.env'\n    detach: true\n    prune: false\n    resolve_image: 'always'\n    registry_auth: true # not needed with registry_pass/registry_user\n    registry_host: 'ghcr.io'\n    registry_user: ${{ vars.GHCR_USER }}\n    registry_pass: ${{ secrets.GHCR_PASS }}\n    summary: true\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eCompose with Defaults\u003c/summary\u003e\n\n```yaml\n- name: 'Compose Deploy'\n  uses: cssnr/stack-deploy-action@v1\n  with:\n    name: 'stack-name'\n    file: 'docker-compose.yaml'\n    host: ${{ secrets.DOCKER_HOST }}\n    port: ${{ secrets.DOCKER_PORT }}\n    user: ${{ secrets.DOCKER_USER }}\n    ssh_key: ${{ secrets.DOCKER_SSH_KEY }}\n    mode: compose\n```\n\n\u003c/details\u003e\n\u003cdetails open\u003e\u003csummary\u003eCompose with Custom Arguments\u003c/summary\u003e\n\n```yaml\n- name: 'Compose Deploy'\n  uses: cssnr/stack-deploy-action@v1\n  with:\n    name: 'stack-name'\n    file: 'docker-compose.yaml'\n    host: ${{ secrets.DOCKER_HOST }}\n    port: ${{ secrets.DOCKER_PORT }}\n    user: ${{ secrets.DOCKER_USER }}\n    ssh_key: ${{ secrets.DOCKER_SSH_KEY }}\n    mode: compose\n    args: --remove-orphans --force-recreate\n```\n\nNote: these are the default arguments. If you use `args` this will override the default arguments unless they are included.\nYou can disable them by passing an empty string. For more details, see the compose up [docs](https://docs.docker.com/reference/cli/docker/compose/up/).\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eCompose with Private Image\u003c/summary\u003e\n\n```yaml\n- name: 'Compose Deploy'\n  uses: cssnr/stack-deploy-action@v1\n  with:\n    name: 'stack-name'\n    file: 'docker-compose.yaml'\n    host: ${{ secrets.DOCKER_HOST }}\n    port: ${{ secrets.DOCKER_PORT }}\n    user: ${{ secrets.DOCKER_USER }}\n    ssh_key: ${{ secrets.DOCKER_SSH_KEY }}\n    registry_host: 'ghcr.io'\n    registry_user: ${{ vars.GHCR_USER }}\n    registry_pass: ${{ secrets.GHCR_PASS }}\n    mode: compose\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eWith All Compose Inputs\u003c/summary\u003e\n\n```yaml\n- name: 'Stack Deploy'\n  uses: cssnr/stack-deploy-action@v1\n  with:\n    name: 'stack-name'\n    file: 'docker-compose-swarm.yaml'\n    host: ${{ secrets.DOCKER_HOST }}\n    port: ${{ secrets.DOCKER_PORT }}\n    user: ${{ secrets.DOCKER_USER }}\n    pass: ${{ secrets.DOCKER_PASS }} # not needed with ssh_key\n    ssh_key: ${{ secrets.DOCKER_SSH_KEY }} # not needed with pass\n    env_file: 'stack.env'\n    registry_host: 'ghcr.io'\n    registry_user: ${{ vars.GHCR_USER }}\n    registry_pass: ${{ secrets.GHCR_PASS }}\n    mode: compose\n    args: --remove-orphans --force-recreate\n    summary: true\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eSimple Workflow Example\u003c/summary\u003e\n\n```yaml\nname: 'Stack Deploy Action'\n\non:\n  push:\n\njobs:\n  deploy:\n    name: 'Deploy'\n    runs-on: ubuntu-latest\n    timeout-minutes: 5\n\n    steps:\n      - name: 'Checkout'\n        uses: actions/checkout@v4\n\n      - name: 'Stack Deploy'\n        uses: cssnr/stack-deploy-action@v1\n        with:\n          name: 'stack-name'\n          file: 'docker-compose-swarm.yaml'\n          host: ${{ secrets.DOCKER_HOST }}\n          port: ${{ secrets.DOCKER_PORT }}\n          user: ${{ secrets.DOCKER_USER }}\n          pass: ${{ secrets.DOCKER_PASS }}\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eFull Workflow Example\u003c/summary\u003e\n\n```yaml\nname: 'Stack Deploy Action'\n\non:\n  workflow_dispatch:\n    inputs:\n      tags:\n        description: 'Tags: comma,separated'\n        required: true\n        default: 'latest'\n\nenv:\n  REGISTRY: 'ghcr.io'\n\nconcurrency:\n  group: ${{ github.workflow }}\n  cancel-in-progress: true\n\njobs:\n  build:\n  name: 'Build'\n  runs-on: ubuntu-latest\n  timeout-minutes: 15\n  permissions:\n    packages: write\n\n  steps:\n    - name: 'Checkout'\n      uses: actions/checkout@v4\n\n    - name: 'Setup Buildx'\n      uses: docker/setup-buildx-action@v2\n      with:\n        platforms: 'linux/amd64,linux/arm64'\n\n    - name: 'Docker Login'\n      uses: docker/login-action@v3\n      with:\n        registry: $${{ env.REGISTRY }}\n        username: ${{ secrets.GHCR_USER }}\n        password: ${{ secrets.GHCR_PASS }}\n\n    - name: 'Generate Tags'\n      id: tags\n      uses: cssnr/docker-tags-action@v1\n      with:\n        images: $${{ env.REGISTRY }}/${{ github.repository }}\n        tags: ${{ inputs.tags }}\n\n    - name: 'Build and Push'\n      uses: docker/build-push-action@v6\n      with:\n        context: .\n        platforms: 'linux/amd64,linux/arm64'\n        push: true\n        tags: ${{ steps.tags.outputs.tags }}\n        labels: ${{ steps.tags.outputs.labels }}\n\n  deploy:\n    name: 'Deploy'\n    runs-on: ubuntu-latest\n    timeout-minutes: 5\n    needs: [build]\n\n    steps:\n      - name: 'Checkout'\n        uses: actions/checkout@v4\n\n      - name: 'Stack Deploy'\n        uses: cssnr/stack-deploy-action@v1\n        with:\n          name: 'stack-name'\n          file: 'docker-compose-swarm.yaml'\n          host: ${{ secrets.DOCKER_HOST }}\n          port: ${{ secrets.DOCKER_PORT }}\n          user: ${{ secrets.DOCKER_USER }}\n          ssh_key: ${{ secrets.DOCKER_SSH_KEY }}\n\n  cleanup:\n    name: 'Cleanup'\n    runs-on: ubuntu-latest\n    timeout-minutes: 5\n    needs: deploy\n    permissions:\n      contents: read\n      packages: write\n\n    steps:\n      - name: 'Purge Cache'\n        uses: cssnr/cloudflare-purge-cache-action@v2\n        with:\n          token: ${{ secrets.CLOUDFLARE_API_TOKEN }}\n          zones: cssnr.com\n```\n\n\u003c/details\u003e\n\nFor more examples, you can check out other projects using this action:  \nhttps://github.com/cssnr/stack-deploy-action/network/dependents\n\n## Tags\n\nThe following rolling [tags](https://github.com/cssnr/stack-deploy-action/tags) are maintained.\n\n| Version\u0026nbsp;Tag                                                                                                                                                                                                       | Rolling | Bugs | Feat. |   Name    |  Target  | Example  |\n| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-----: | :--: | :---: | :-------: | :------: | :------- |\n| [![GitHub Tag Major](https://img.shields.io/github/v/tag/cssnr/stack-deploy-action?sort=semver\u0026filter=!v*.*\u0026style=for-the-badge\u0026label=%20\u0026color=44cc10)](https://github.com/cssnr/stack-deploy-action/releases/latest) |   ✅    |  ✅  |  ✅   | **Major** | `vN.x.x` | `vN`     |\n| [![GitHub Tag Minor](https://img.shields.io/github/v/tag/cssnr/stack-deploy-action?sort=semver\u0026filter=!v*.*.*\u0026style=for-the-badge\u0026label=%20\u0026color=blue)](https://github.com/cssnr/stack-deploy-action/releases/latest) |   ✅    |  ✅  |  ❌   | **Minor** | `vN.N.x` | `vN.N`   |\n| [![GitHub Release](https://img.shields.io/github/v/release/cssnr/stack-deploy-action?style=for-the-badge\u0026label=%20\u0026color=red)](https://github.com/cssnr/stack-deploy-action/releases/latest)                           |   ❌    |  ❌  |  ❌   | **Micro** | `vN.N.N` | `vN.N.N` |\n\nYou can view the release notes for each version on the [releases](https://github.com/cssnr/stack-deploy-action/releases) page.\n\nThe **Major** tag is recommended. It is the most up-to-date and always backwards compatible.\nBreaking changes would result in a **Major** version bump. At a minimum you should use a **Minor** tag.\n\n## Features\n\n- Deploy to a remote host using SSH or Password authentication.\n- Deploy using a remote context from the current working directory.\n- Deploy from a compose file to either a Docker Swarm or Compose host.\n- Displays output in logs, captures it in the Summary, and checks the status.\n- Allows logging into a private registry and deploying with registry auth.\n- Allows specifying all arguments for both Swarm and Compose deployments.\n\nDon't see your feature here? Request it below in the [Support](#Support) section.\n\n# Support\n\nFor general help or to request a feature see:\n\n- Q\u0026A Discussion: https://github.com/cssnr/stack-deploy-action/discussions/categories/q-a\n- Request a Feature: https://github.com/cssnr/stack-deploy-action/discussions/categories/feature-requests\n\nIf you are experiencing an issue/bug or getting unexpected results you can:\n\n- Report an Issue: https://github.com/cssnr/stack-deploy-action/issues\n- Chat with us on Discord: https://discord.gg/wXy6m2X8wY\n- Provide General Feedback: [https://cssnr.github.io/feedback/](https://cssnr.github.io/feedback/?app=Stack%20Deploy)\n\nFor more information, see the CSSNR [SUPPORT.md](https://github.com/cssnr/.github/blob/master/.github/SUPPORT.md#support).\n\n# Contributing\n\nCurrently, the best way to contribute to this project is to star this project on GitHub.\n\nIf you would like to submit a PR, please review the [CONTRIBUTING.md](CONTRIBUTING.md).\n\nAdditionally, you can support other GitHub Actions I have published:\n\n- [Stack Deploy Action](https://github.com/cssnr/stack-deploy-action?tab=readme-ov-file#readme)\n- [Portainer Stack Deploy](https://github.com/cssnr/portainer-stack-deploy-action?tab=readme-ov-file#readme)\n- [VirusTotal Action](https://github.com/cssnr/virustotal-action?tab=readme-ov-file#readme)\n- [Mirror Repository Action](https://github.com/cssnr/mirror-repository-action?tab=readme-ov-file#readme)\n- [Update Version Tags Action](https://github.com/cssnr/update-version-tags-action?tab=readme-ov-file#readme)\n- [Update JSON Value Action](https://github.com/cssnr/update-json-value-action?tab=readme-ov-file#readme)\n- [Parse Issue Form Action](https://github.com/cssnr/parse-issue-form-action?tab=readme-ov-file#readme)\n- [Cloudflare Purge Cache Action](https://github.com/cssnr/cloudflare-purge-cache-action?tab=readme-ov-file#readme)\n- [Mozilla Addon Update Action](https://github.com/cssnr/mozilla-addon-update-action?tab=readme-ov-file#readme)\n- [Docker Tags Action](https://github.com/cssnr/docker-tags-action?tab=readme-ov-file#readme)\n- [Package Changelog Action](https://github.com/cssnr/package-changelog-action?tab=readme-ov-file#readme)\n- [NPM Outdated Check Action](https://github.com/cssnr/npm-outdated-action?tab=readme-ov-file#readme)\n\nFor a full list of current projects to support visit: [https://cssnr.github.io/](https://cssnr.github.io/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcssnr%2Fstack-deploy-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcssnr%2Fstack-deploy-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcssnr%2Fstack-deploy-action/lists"}