Running CI on Github
We develop and test our CI pipeline with Earthly, then we can create a Github Action to trigger our earthly build.
Create a file .github/workflows/ci.yml
and add the following
Github Action
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
env:
FORCE_COLOR: 1
steps:
- uses: earthly/actions/[email protected]
with:
version: v0.6.0
- uses: actions/[email protected]
- name: Put back the git branch into git (Earthly uses it for tagging)
run: |
branch=""
if [ -n "$GITHUB_HEAD_REF" ]; then
branch="$GITHUB_HEAD_REF"
else
branch="${GITHUB_REF##*/}"
fi
git checkout -b "$branch" || true
- name: Log in to the Container registry
uses: docker/[email protected]
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Earthly version
run: earthly --version
- name: Run build
# Allow privelaged is required to run docker in docker
run: earthly --allow-privileged +all
- name: Tag and Push Images
run: |
docker tag rustonnails/app ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}
docker tag rustonnails/app-migrations ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}-migrations
docker push ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:latest
docker push ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}-migrations:latest
This will run our earthly build and push our docker images to the Github Container Registry.
The images will be renamed to match your Github organisation and project.
Packages
The screenshot below shows how your Github repo should look after the pipeline has run.