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 }}