Ich habe da heute mal ein wenig herumgespielt. Ich habe es leider nicht geschafft, ein GitLab Deployment ohne das minkbear Image zum Laufen zu bringen.
Allerdings ist es mir mithilfe von ChatGPT gelungen, einen Github Action Workflow zu erstellen, der ohne Fremdimage auskommt und nur den von Github bereitgestellten Runner nutzt.
Es funktioniert in meinen Tests perfekt.
Ich bin aber in dem Thema alles andere als ein Experte, und daher weiß ich nicht, ob der Code wirklich gut ist. Aber er funktioniert.
Dafür habe ich ein neues GitHub Repo angelegt und SSH_PRIVATE_KEY und SSH_KNOWN_HOSTS dort in den Settings als "Secret" hinterlegt.
Die deploy.php musste ich dafür nicht ändern.
Hier mal die funktionierende Datei in .gihub/workflows/deploy.yml:
name: Deploy
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
concurrency:
group: production
cancel-in-progress: false
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Install PHP and Composer
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
extensions: mbstring, intl
- name: Install Deployer
run: |
composer global require deployer/deployer
export PATH="$HOME/.composer/vendor/bin:$PATH"
- name: SSH-Agent starten und Schlüssel hinzufügen
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Known Hosts hinzufügen
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts
- name: Berechtigungen korrigieren
run: |
find . -type d -print0 | xargs -0 chmod 0755
find . -type f -print0 | xargs -0 chmod 0664
- name: Abhängigkeiten installieren
run: |
composer install --no-dev --no-ansi --no-interaction --no-scripts --prefer-dist --ignore-platform-reqs
- name: Deployment auf Produktion
run: |
dep deploy production -vvv