Daniel Doubrovkine bio photo

Daniel Doubrovkine

aka dB., @awscloud, former CTO @artsy, +@vestris, NYC

Email Twitter LinkedIn Github Strava
Creative Commons License

I’m a big fan of GitHub Actions to automate workflows. They are declarative in nature, developed as open-source components, and execution is container-based. I also recently learned that GitHub Actions were actually not tied to GitHub infrastructure, and can be executed locally, using act.

Let’s build OpenSearch job-scheduler on a local Linux.

Download Act

Download and install act from here. I just run the install.sh because YOLO.

curl https://raw.githubusercontent.com/nektos/act/master/install.sh | sudo bash

Check Out JobScheduler

git checkout git@github.com:opensearch-project/job-scheduler.git
cd job-scheduler

Modify Workflow (Temporary)

By default the runner user under which the workflow runs in the Docker container does not have write access to the current folder, therefore the workflow as implemented requires one additional step. Add the following code locally in .github/workflows/test-and-build-workflow.yml after “Setup Java”.

- name: Chown
run: |
    sudo chown -R runner .

Environment

The current workflow implementation checks out OpenSearch and builds it, thus needing a token to git clone from GitHub. Create a .secrets file with a read-only GitHub token. This gets automatically picked up by act.

GITHUB_TOKEN=valid-token

Invoke Act

act -r pull_request -P ubuntu-latest=catthehacker/ubuntu:runner-latest 

Act uses an open-source Docker container to run the job. Enjoy a BUILD SUCCESSFUL result!