Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[docs] Explain the builtin commands and the separating script for script run stage #5127

Merged
merged 8 commits into from
Sep 5, 2024
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,52 @@ The commands run in the directory where this application configuration file exis

![](/images/script-run.png)

### Execute the script file

If your script is so long, you can separate the script as a file.
You can put the file with the app.pipecd.yaml in the same dir and then you can execute the script like this.

```
apiVersion: pipecd.dev/v1beta1
kind: KubernetesApp
spec:
name: script-run
pipeline:
stages:
- name: SCRIPT_RUN
with:
run: |
sh script.sh
```

```
.
├── app.pipecd.yaml
└── script.sh
```

## Builtin commands

Currently, you can use the commands which are installed in the environment for the piped.

For example, If you are using the container platform and the offcial piped container image, you can use the command below.
- git
- ssh
- jq
- curl
- kubectl, helm, kustomize, terraform stored in $PIPED_TOOL_DIR
- Be careful. These tools are sometimes absent because they are installed when the first deployment has been done using each tool. Please check $PIPED_TOOL_DIR before you use them.
- Binaries can be specified as "kubectl-${version}" or "kubectl".
- If no version is specified on the piped config or app.pipecd.yaml, both the ones with and without default version suffix will be installed.
- Please check the [code](https://github.com/pipe-cd/pipecd/blob/master/pkg/app/piped/toolregistry/install.go#L28C1-L33C2) about the default versions.
- and the builtin commands installed in the base image.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Users can also use piped installed tools such as terraform, kubectl, helm, kustomize, etc 👀

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@khanhtc1202
Thank you for the comment.
I think it might be unexpected usage for these tools.
WDYT?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I don't really get your point. Could you explain it 🙏

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Discussed about it in person. I agree that users can use the commands installed for the piped.

  • we can use them on the script run stage
  • but this may change in the future

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed on 48d7819

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with @khanhtc1202 .
It's okay to mention that some tools may be available under PIPED_TOOLS_DIR.
But I think we also have to mention that the tools can be absent sometimes.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@khanhtc1202 @Warashi

So, the binaries are sometimes absent, such as when the SCRIPT_RUN stage is the first stage of the pipeline and the binaries are not installed yet.

I forgot it. So I think we should not explain it.

It might be confusing for users who use SCRIPT_RUN that the command does not exist until the first deployment is executed.
If the piped administrator and the app administrator are different, I don't think there is a way for the app administrator to check the dir.

WDYT?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The app administrator can use the SCRIPT_RUN stage, such as executing ls, to check whether the commands exist.
But I think it's nonsense to check whether the commands exist. If the administrator has to use a command, they should install it in the SCRIPT_RUN stage or ask the piped admin to use a custom container image containing the command.

I think it's okay to mention some tools are sometimes available under PIPED_TOOLS_DIR because it's a fact.
On the other hand, users must use those tools carefully, and we must explain why users must pay attention.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried adding it anyway. bfb1765

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Plz check it 🙏 @Warashi @khanhtc1202

Copy link
Member

@khanhtc1202 khanhtc1202 Sep 5, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- git
- ssh
- jq
- curl
- kubectl, helm, kustomize, terraform stored in $PIPED_TOOL_DIR
- Be careful. These tools are sometimes absent because they are installed when the first deployment has been done using each tool. Please check $PIPED_TOOL_DIR before you use them.
- Binaries can be specified as "kubectl-${version}" or "kubectl".
- If no version is specified on the piped config or app.pipecd.yaml, both the ones with and without default version suffix will be installed.
- Please check the [code](https://github.com/pipe-cd/pipecd/blob/master/pkg/app/piped/toolregistry/install.go#L28C1-L33C2) about the default versions.
- and the builtin commands installed in the base image.
- git
- ssh
- jq
- curl
- commands installed by piped in $PIPED_TOOL_DIR (check at runtime)
- built-in commands installed in the base image

How about this? @ffjlabo

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@khanhtc1202
I think we also have to mention that the tools can be absent sometimes.
WDYT?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is why I added the note (check at runtime). I think it would be better not to confuse users by showing too much explanation 🤔

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, I agree with your point.
I will fix it👌

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed 48022da


The public piped image available in PipeCD main repo (ref: [Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/cmd/piped/Dockerfile)) is based on [alpine](https://hub.docker.com/_/alpine/) and only has a few UNIX commands available (ref: [piped-base Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/tool/piped-base/Dockerfile)).

If you want to use your commands, you can realize it with either step below.
- Prepare your own environment container image then add [piped binary](https://github.com/pipe-cd/pipecd/releases) to it.
- Build your own container image based on `ghcr.io/pipe-cd/piped` image.

## Default environment values

You can use the envrionment values related to the deployment.
Expand Down Expand Up @@ -86,7 +132,6 @@ You can use jq command to refer to the values from `SR_CONTEXT_RAW`.
echo "rollback script-run"
```


## Rollback

> Note: Currently, this feature is only for the application kind of KubernetesApp.
Expand Down Expand Up @@ -147,12 +192,3 @@ Then
- If 3 is canceled or fails while running, only SCRIPT_RUN of 3 will be rollbacked.
- If 4 is canceled or fails while running, only SCRIPT_RUN of 3 will be rollbacked.
- If 6 is canceled or fails while running, only SCRIPT_RUNs 3 and 5 will be rollbacked. The order of executing is 3 -> 5.

## Note
1. You can use `SCRIPT_RUN` stage with only the application kind of `KubernetesApp`. Soon we will implement it. for other application kinds.

2. The public piped image available in PipeCD main repo (ref: [Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/cmd/piped/Dockerfile)) is based on [alpine](https://hub.docker.com/_/alpine/) and only has a few UNIX command available (ref: [piped-base Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/tool/piped-base/Dockerfile)). If you want to use your commands, you can:

- Prepare your own environment container image then add [piped binary](https://github.com/pipe-cd/pipecd/releases) to it.
- Build your own container image based on `ghcr.io/pipe-cd/piped` image.
- Manually update your running piped container (not recommended).
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,51 @@ The commands run in the directory where this application configuration file exis

![](/images/script-run.png)

### Execute the script file

If your script is so long, you can separate the script as a file.
You can put the file with the app.pipecd.yaml in the same dir and then you can execute the script like this.

```
apiVersion: pipecd.dev/v1beta1
kind: KubernetesApp
spec:
name: script-run
pipeline:
stages:
- name: SCRIPT_RUN
with:
run: |
sh script.sh
```

```
.
├── app.pipecd.yaml
└── script.sh
```

## Builtin commands

Currently, you can use the commands which are installed in the environment for the piped.

For example, If you are using the container platform and the offcial piped container image, you can use the command below.
- git
- ssh
- curl
- kubectl, helm, kustomize, terraform stored in $PIPED_TOOL_DIR
- Be careful. These tools are sometimes absent because they are installed when the first deployment has been done using each tool. Please check $PIPED_TOOL_DIR before you use them.
- Binaries can be specified as "kubectl-${version}" or "kubectl".
- If no version is specified on the piped config or app.pipecd.yaml, both the ones with and without default version suffix will be installed.
- Please check the [code](https://github.com/pipe-cd/pipecd/blob/master/pkg/app/piped/toolregistry/install.go#L28C1-L33C2) about the default versions.
- and the builtin commands installed in the base image.

The public piped image available in PipeCD main repo (ref: [Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/cmd/piped/Dockerfile)) is based on [alpine](https://hub.docker.com/_/alpine/) and only has a few UNIX commands available (ref: [piped-base Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/tool/piped-base/Dockerfile)).

If you want to use your commands, you can realize it with either step below.
- Prepare your own environment container image then add [piped binary](https://github.com/pipe-cd/pipecd/releases) to it.
- Build your own container image based on `ghcr.io/pipe-cd/piped` image.

# When to rollback

You can define the command as `onRollback` to execute when to rollback similar to `run`.
Expand Down Expand Up @@ -113,12 +158,3 @@ Then
- If 3 is canceled or fails while running, only SCRIPT_RUN of 3 will be rollbacked.
- If 4 is canceled or fails while running, only SCRIPT_RUN of 3 will be rollbacked.
- If 6 is canceled or fails while running, only SCRIPT_RUNs 3 and 5 will be rollbacked. The order of executing is 3 -> 5.

# Note
1. You can use `SCRIPT_RUN` stage with only the application kind of `KubernetesApp`. Soon we will implement it. for other application kinds.

2. The public piped image available in PipeCD main repo (ref: [Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/cmd/piped/Dockerfile)) is based on [alpine](https://hub.docker.com/_/alpine/) and only has a few UNIX command available (ref: [piped-base Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/tool/piped-base/Dockerfile)). If you want to use your commands, you can:

- Prepare your own environment container image then add [piped binary](https://github.com/pipe-cd/pipecd/releases) to it.
- Build your own container image based on `ghcr.io/pipe-cd/piped` image.
- Manually update your running piped container (not recommended).
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,51 @@ The commands run in the directory where this application configuration file exis

![](/images/script-run.png)

### Execute the script file

If your script is so long, you can separate the script as a file.
You can put the file with the app.pipecd.yaml in the same dir and then you can execute the script like this.

```
apiVersion: pipecd.dev/v1beta1
kind: KubernetesApp
spec:
name: script-run
pipeline:
stages:
- name: SCRIPT_RUN
with:
run: |
sh script.sh
```

```
.
├── app.pipecd.yaml
└── script.sh
```

## Builtin commands

Currently, you can use the commands which are installed in the environment for the piped.

For example, If you are using the container platform and the offcial piped container image, you can use the command below.
- git
- ssh
- curl
- kubectl, helm, kustomize, terraform stored in $PIPED_TOOL_DIR
- Be careful. These tools are sometimes absent because they are installed when the first deployment has been done using each tool. Please check $PIPED_TOOL_DIR before you use them.
- Binaries can be specified as "kubectl-${version}" or "kubectl".
- If no version is specified on the piped config or app.pipecd.yaml, both the ones with and without default version suffix will be installed.
- Please check the [code](https://github.com/pipe-cd/pipecd/blob/master/pkg/app/piped/toolregistry/install.go#L28C1-L33C2) about the default versions.
- and the builtin commands installed in the base image.

The public piped image available in PipeCD main repo (ref: [Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/cmd/piped/Dockerfile)) is based on [alpine](https://hub.docker.com/_/alpine/) and only has a few UNIX commands available (ref: [piped-base Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/tool/piped-base/Dockerfile)).

If you want to use your commands, you can realize it with either step below.
- Prepare your own environment container image then add [piped binary](https://github.com/pipe-cd/pipecd/releases) to it.
- Build your own container image based on `ghcr.io/pipe-cd/piped` image.

# When to rollback

You can define the command as `onRollback` to execute when to rollback similar to `run`.
Expand Down Expand Up @@ -113,12 +158,3 @@ Then
- If 3 is canceled or fails while running, only SCRIPT_RUN of 3 will be rollbacked.
- If 4 is canceled or fails while running, only SCRIPT_RUN of 3 will be rollbacked.
- If 6 is canceled or fails while running, only SCRIPT_RUNs 3 and 5 will be rollbacked. The order of executing is 3 -> 5.

# Note
1. You can use `SCRIPT_RUN` stage with only the application kind of `KubernetesApp`. Soon we will implement it. for other application kinds.

2. The public piped image available in PipeCD main repo (ref: [Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/cmd/piped/Dockerfile)) is based on [alpine](https://hub.docker.com/_/alpine/) and only has a few UNIX command available (ref: [piped-base Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/tool/piped-base/Dockerfile)). If you want to use your commands, you can:

- Prepare your own environment container image then add [piped binary](https://github.com/pipe-cd/pipecd/releases) to it.
- Build your own container image based on `ghcr.io/pipe-cd/piped` image.
- Manually update your running piped container (not recommended).
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,52 @@ The commands run in the directory where this application configuration file exis

![](/images/script-run.png)

### Execute the script file

If your script is so long, you can separate the script as a file.
You can put the file with the app.pipecd.yaml in the same dir and then you can execute the script like this.

```
apiVersion: pipecd.dev/v1beta1
kind: KubernetesApp
spec:
name: script-run
pipeline:
stages:
- name: SCRIPT_RUN
with:
run: |
sh script.sh
```

```
.
├── app.pipecd.yaml
└── script.sh
```

## Builtin commands

Currently, you can use the commands which are installed in the environment for the piped.

For example, If you are using the container platform and the offcial piped container image, you can use the command below.
- git
- ssh
- jq
- curl
- kubectl, helm, kustomize, terraform stored in $PIPED_TOOL_DIR
- Be careful. These tools are sometimes absent because they are installed when the first deployment has been done using each tool. Please check $PIPED_TOOL_DIR before you use them.
- Binaries can be specified as "kubectl-${version}" or "kubectl".
- If no version is specified on the piped config or app.pipecd.yaml, both the ones with and without default version suffix will be installed.
- Please check the [code](https://github.com/pipe-cd/pipecd/blob/master/pkg/app/piped/toolregistry/install.go#L28C1-L33C2) about the default versions.
- and the builtin commands installed in the base image.

The public piped image available in PipeCD main repo (ref: [Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/cmd/piped/Dockerfile)) is based on [alpine](https://hub.docker.com/_/alpine/) and only has a few UNIX commands available (ref: [piped-base Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/tool/piped-base/Dockerfile)).

If you want to use your commands, you can realize it with either step below.
- Prepare your own environment container image then add [piped binary](https://github.com/pipe-cd/pipecd/releases) to it.
- Build your own container image based on `ghcr.io/pipe-cd/piped` image.

## Default environment values

You can use the envrionment values related to the deployment.
Expand Down Expand Up @@ -147,12 +193,3 @@ Then
- If 3 is canceled or fails while running, only SCRIPT_RUN of 3 will be rollbacked.
- If 4 is canceled or fails while running, only SCRIPT_RUN of 3 will be rollbacked.
- If 6 is canceled or fails while running, only SCRIPT_RUNs 3 and 5 will be rollbacked. The order of executing is 3 -> 5.

## Note
1. You can use `SCRIPT_RUN` stage with only the application kind of `KubernetesApp`. Soon we will implement it. for other application kinds.

2. The public piped image available in PipeCD main repo (ref: [Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/cmd/piped/Dockerfile)) is based on [alpine](https://hub.docker.com/_/alpine/) and only has a few UNIX command available (ref: [piped-base Dockerfile](https://github.com/pipe-cd/pipecd/blob/master/tool/piped-base/Dockerfile)). If you want to use your commands, you can:

- Prepare your own environment container image then add [piped binary](https://github.com/pipe-cd/pipecd/releases) to it.
- Build your own container image based on `ghcr.io/pipe-cd/piped` image.
- Manually update your running piped container (not recommended).
Loading