https://github.com/eclass/semantic-release-ssh-commands
semantic-release plugin to execute remote commands to deploy apps
https://github.com/eclass/semantic-release-ssh-commands
semantic-release semantic-release-plugin ssh
Last synced: 3 days ago
JSON representation
semantic-release plugin to execute remote commands to deploy apps
- Host: GitHub
- URL: https://github.com/eclass/semantic-release-ssh-commands
- Owner: eclass
- License: mit
- Created: 2020-01-29T13:56:38.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-11-19T11:41:37.000Z (8 months ago)
- Last Synced: 2024-11-19T12:50:28.908Z (8 months ago)
- Topics: semantic-release, semantic-release-plugin, ssh
- Language: JavaScript
- Size: 866 KB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 30
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# @eclass/semantic-release-ssh-commands
[](https://www.npmjs.com/package/@eclass/semantic-release-ssh-commands)

[](https://www.npmjs.com/package/@eclass/semantic-release-ssh-commands)
[](https://david-dm.org/eclass/semantic-release-ssh-commands)
[](https://david-dm.org/eclass/semantic-release-ssh-commands#info=devDependencies)
[](https://coveralls.io/github/eclass/semantic-release-ssh-commands?branch=master)
[](https://codeclimate.com/github/eclass/semantic-release-ssh-commands/maintainability)
[](https://github.com/semantic-release/semantic-release)> [semantic-release](https://github.com/semantic-release/semantic-release) plugin to deploy app with ssh commands
| Step | Description |
|--------------------|--------------------------------------------------------------------------|
| `verifyConditions` | Verify the presence of the `SSH_USER`, `SSH_HOST` environment variables. |
| `publish` | Deploy app over ssh. |## Install
```bash
npm i -D @eclass/semantic-release-ssh-commands
```## Usage
The plugin can be configured in the [**semantic-release** configuration file](https://github.com/semantic-release/semantic-release/blob/caribou/docs/usage/configuration.md#configuration):
```json
{
"plugins": [
"@semantic-release/changelog",
"@semantic-release/npm",
"@semantic-release/git",
"@semantic-release/gitlab",
[
"@eclass/semantic-release-ssh-commands",
{
"verifyConditionsCmd": "bash verify.sh",
"publishCmd": "bash deploy.sh ${nextRelease.version}",
}
]
]
}
```**NOTE: verify.sh and deploy.sh are script located in remote server**
## Configuration
### Environment variables
| Variable | Description |
| ----------------- | ------------------------------------- |
| `SSH_USER` | A ssh user |
| `SSH_HOST` | A ssh host |
| `SSH_PRIVATE_KEY` | Content of private ssh key (Optional) |### Options
| Variable | Description |
| --------------------- | ----------------------------------------------------------------- |
| `verifyConditionsCmd` | A command to verificate. Required. Ex: "docker pull myuser/myapp" or "bash verify.sh" |
| `publishCmd` | A command to publish new release. Required. Ex: "bash deploy.sh ${nextRelease.version}" |### Examples
```json
{
"plugins": [
"@semantic-release/changelog",
"@semantic-release/npm",
"@semantic-release/git",
"@semantic-release/gitlab",
[
"@eclass/semantic-release-ssh-commands",
{
"verifyConditionsCmd": "bash verify.sh",
"publishCmd": "bash deploy.sh ${nextRelease.version}"
}
]
]
}
``````yml
# .gitlab-ci.yml
release:
image: node:alpine
stage: release
before_script:
- apk add --no-cache git openssh-client
- mkdir -p /root/.ssh
- chmod 0700 /root/.ssh
- ssh-keyscan $SSH_HOST > /root/.ssh/known_hosts
- echo "$SSH_PRIVATE_KEY" > /root/.ssh/id_rsa
- chmod 600 /root/.ssh/id_rsa
- echo " IdentityFile /root/.ssh/id_rsa" >> /etc/ssh/ssh_config
script:
- npx semantic-release
only:
- master
``````yml
# .travis.yml
language: node_js
cache:
directories:
- ~/.npm
node_js:
- "12"
stages:
- test
- name: deploy
if: branch = master
jobs:
include:
- stage: test
script: npm t
- stage: deploy
addons:
ssh_known_hosts: $SSH_HOST
before_deploy:
- eval "$(ssh-agent -s)"
- echo "$SSH_PRIVATE_KEY" > /tmp/deploy_rsa
- chmod 600 /tmp/deploy_rsa
- ssh-add /tmp/deploy_rsa
script: npx semantic-release```
## License
[MIT](https://tldrlegal.com/license/mit-license)