I'm building a workflow to test, build a docker image and push it to GitHub private repository.
I used to run the action on ububntu-latest and use a specific PHP version and some environment builds but there were some problems due to the fact that it's not identical to the production build.
I wanted to use the same environment as production so I have used a container that utilizes php7.3 and I called that after running the action on ubuntu-latest
The issue I'm facing now is after a successful composer update I can't call the default step tp build docker image. I get this error on "Set up QEMU" step
Error: Unable to locate executable file: docker. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.
Here's my action
name: Build and Publish Docker for development
on:
push:
branches: development
jobs:
build:
runs-on: ubuntu-latest
container:
image: egahmad/php7.3-laravel-apache-development
# volumes:
# - app_files:/var/www/html/
services:
mysql:
image: mysql:5.7
env:
MYSQL_DATABASE: db
MYSQL_USER: user
MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: secret
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- uses: actions/checkout@v2
- name: Verify TNT MySQL connection
run: |
mysql --version
sudo apt-get install -y default-mysql-client
mysql --host mysql --port ${{ job.services.mysql.ports['3306'] }} -uuser -psecret -e "SHOW DATABASES"
- name: Copy .env
run: |
php -r "file_exists('.env') || copy('.env.cicd', '.env');"
- name: Install Dependencies
run: composer install
- name: Generate key
run: php artisan key:generate
- name: Directory Permissions
run: chmod -R 777 storage bootstrap/cache
- name: Execute tests (Unit and Feature tests) via PHPUnit
env:
MYSQL_DATABASE: db
DB_USERNAME: user
DB_PASSWORD: secret
DB_PORT: ${{ job.services.mysql.ports[3306] }}
run: vendor/bin/phpunit
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_SECRET }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
push: true
target: ci
tags: ghcr.io/account/image:development
build-args: |
GITHUB_USER=${{ secrets.GITHUB_USERNAME }}
GITHUB_PASSWORD=${{ secrets.CR_PAT }}
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}