> For the complete documentation index, see [llms.txt](https://onevarez.gitbook.io/cli/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://onevarez.gitbook.io/cli/extending/github-actions.md).

# Github actions

### Commander

This Github action simplifies the creation of simple build tasks.

#### Usage

The following example creates and builds a buildtask.

First, create a file `commander.yml` at the root of the project. This file is the entrypoint for the task generation, each command will be executed during the build process.

```yaml
# commander.yml
laraboot-commander:
  commands:
    - ls
    - pwd
    - git --version
```

The following is an example of how the build and publish processes work together in a CI environment. It considers OCI registry for publication. In this case docker hub.

```yaml
# .github/workflows/actions.yml
# This is a basic workflow to help you get started with Laraboot using Github Actions

name: CI

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
  push:
    branches:
      - next

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: buildpacks/github-actions/setup-pack@v4.1.0
      - uses: actions/setup-go@v1
        with:
          go-version: 1.16.x
      - uses: actions/setup-node@v1
        with:
          node-version: 12
      - name: Setup laraboot CLI
        env:
          NODE_AUTH_TOKEN: ${{secrets.NODE_AUTH_TOKEN}}
        uses: laraboot-io/github-actions/setup-cli@cli-actions
      - name: Authenticate
        run: |
          echo "${{ secrets.LARABOOT_TOKEN }}" | laraboot login --user "${{ secrets.LARABOOT_USERNAME }}" -vvv
      - name: Build
        id: build
        uses: laraboot-io/github-actions/commander@next
        with:
          # Replace this with
          buildtask-name: mybuildtask

      - name: Login to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKER_HUB_USERNAME }}
          password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

      - name: Release into DockerHub
        env:
          # or consume ${{ steps.build.outputs.buildtask_name }}
          BUILDTASK_NAME: mybuildtask
          ECR_REGISTRY: ${{ secrets.DOCKER_HUB_USERNAME }}
        run: |
          # Use current branch as tag
          docker tag $BUILDTASK_NAME $ECR_REGISTRY/$BUILDTASK_NAME:${GITHUB_REF##*/}
          docker push $ECR_REGISTRY/$BUILDTASK_NAME:${GITHUB_REF##*/}
```

{% hint style="info" %}
Commander will only build the task but it doesn't publish it.-
{% endhint %}
