on
Converting CLI tool to Github Action
In this article, I will share my journey of creating Docker container action for one of the CLI tools I use.
What is “Github Actions”?
GitHub Actions allows you to build end-to-end continuous integration (CI) and continuous deployment (CD) capabilities directly in your repository. If you are not familiar with Github Actions, you can read more about it here.
Here are the steps to build and publish Docker container action:
Step 1: Learning the CLI tool
First of all, we need to decide the tool which we want to create Github Action for and research what kind of setup we need in order to run it in our Docker image. In my case, using openjdk:jre-slim
was enough to run detekt.
In this step, one suggestion is that we should try to find lightweight image so that docker pull
is faster.
So, let’s create file called Dockerfile
in our repository and add following:
FROM openjdk:jre-slim
Step 2: Download the CLI tool to the Docker image
In this step, we need to download the tool to our Docker image. For this, we will use ADD
command.
The ADD
command requires a source and a destination:
ADD source destination
Now we can add the CLI tool to the docker image:
ADD https://github.com/detekt/detekt/releases/download/v1.10.0-RC1/detekt /usr/local/bin/detekt
After downloading, we need make our file executable:
...
RUN chmod +x /usr/local/bin/detekt
Step 3: Adding entry point to the Docker image
Now we need to finalize the Docker image by adding ENTRYPOINT:
...
RUN cd $GITHUB_WORKSPACE
ENTRYPOINT ["detekt"]
Notice that, I added cd $GITHUB_WORKSPACE
as well. GITHUB_WORKSPACE
is an environment variable which tells us working directory so that we can run script in correct directory.
Now we finalized the Dockerfile
changes, we can move to next steps. You can find full Dockerfile here.
Step 4: Publishing
As we finalized the Dockerfile
, we can publish our action. For this, we need to define action.yml
and add name, description, author and other information. You can check action.yml
I created here. After you add action.yml
, you need to create README.md
which gives some information about you action, usage samples, etc. Following step is that after we push our changes to the repository, on GitHub, we need to navigate to the main page of the repository and draft a new release. You can read more here.
🎉Congratulations!🎉
If you followed the steps correctly, the action you created should be published on GitHub Marketplace. You can find the sample repository here.
Share on: