@ibm/ibmi-ci
Version:
IBM i CLI tool
87 lines (60 loc) • 2.55 kB
Markdown
# ibmi-ci
ibmi-ci is a command line tool to make it easier to work with IBM i from pipelines, like GitHub Actions, GitLab CICD, etc.
## Installation
[Install via npm](https://www.npmjs.com/package/@ibm/ibmi-ci):
```sh
npm i @ibm/ibmi-ci
```
<details>
<summary>Use in a GitHub Action</summary>
```yaml
- run: npm i -g @ibm/ibmi-ci
- name: Deploy to IBM i
run: |
ici \
--cmd "mkdir -p './builds/ics_${GITHUB_HEAD_REF}'" \
--rcwd "./builds/ics_${GITHUB_HEAD_REF}" \
--push "." \
--cmd "/QOpenSys/pkgs/bin/gmake BIN_LIB=CMPSYS"
env:
IBMI_HOST: ${{ secrets.IBMI_HOST }}
IBMI_USER: ${{ secrets.IBMI_USER }}
IBMI_PASSWORD: ${{ secrets.IBMI_PASSWORD }}
IBMI_SSH_PORT: ${{ secrets.IBMI_SSH_PORT }}
```
</details>
## How to use
After installation, **run `ici` to see the help text and available parameters**.
ibmi-ci is made up of steps and steps are built up from parameters, with the default step of connecting to the remote system, which always takes a place.
The steps `ici` will take is based on the parameters used on the CLI. For example:
```sh
ici \
--rcwd "./builds/myproject" \
--push "." \
--cmd "/QOpenSys/pkgs/bin/gmake BIN_LIB=MYLIB"
```
This command will run 3 steps:
1. Set the remote working directory to `./builds/myproject`
2. Upload the local working directory to the remote working directory (`.`)
3. Run a shell command
### Default steps
By default, ibmi-ci will always:
1. Connect to the remote IBM i via SSH. Connection configuration is based on environment variables. Use `ici` to see more info.
2. Set the environment variables on the remote IBM i to those of the host runner (with some exceptions like `SHELL`, `HOME`, etc)
### Ignoring errors
You can use a special ignore flag to suppress errors on certain steps: `--ignore`. This means if the following step errors, execution will continue nonetheless.
```sh
ici \
--rcwd "./builds/myproject" \
--push "." \
--ignore --cl "CRTLIB $LIB"
--cmd "/QOpenSys/pkgs/bin/gmake BIN_LIB=MYLIB"
```
## Development
After cloning the repo, there are two options:
1. `npm run local` to install `ici`
2. Open in VS Code and debug
## Todo ✅
* [ ] **Step for creating chroot** automatically as the first step, or to specify which chroot to use
* [x] **Ignore errors** for certain steps. Sometimes we don't care if `mkdir` or `CRTLIB` failed.
* [ ] **Daemon mode** so `ici` can be run multiple times but use the same connection