name: Docker Build on: push: branches: - main tags: - 'v*' workflow_dispatch: jobs: build-and-push: name: Build and Push Docker Image runs-on: act-runner-4c6g env: RUNNER_TOOL_CACHE: /toolcache steps: - name: Install Docker CLI run: | if ! command -v docker &> /dev/null; then if command -v apk &> /dev/null; then apk add --no-cache docker-cli elif command -v apt-get &> /dev/null; then apt-get update && apt-get install -y docker.io else curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz | tar xz -C /tmp mv /tmp/docker/docker /usr/local/bin/ chmod +x /usr/local/bin/docker fi fi docker --version - name: Checkout repository uses: actions/checkout@v4 - name: Login to Gitea Container Registry run: | echo "${{ secrets.PACKAGES_TOKEN }}" | docker login git.viaeon.com -u "${{ github.actor }}" --password-stdin 2>&1 - name: Build Docker image run: | echo "Building image..." docker build \ --label "org.opencontainers.image.source=https://git.viaeon.com/admin/verify" \ --label "org.opencontainers.image.revision=${{ github.sha }}" \ -t git.viaeon.com/admin/verify:${{ github.ref_name }} \ -t git.viaeon.com/admin/verify:latest . 2>&1 - name: Push Docker image run: | echo "Pushing ${{ github.ref_name }}..." docker push git.viaeon.com/admin/verify:${{ github.ref_name }} 2>&1 echo "Pushing latest..." docker push git.viaeon.com/admin/verify:latest 2>&1 deploy: name: Deploy to Server runs-on: act-runner-4c6g needs: build-and-push env: RUNNER_TOOL_CACHE: /toolcache steps: - name: Install SSH client run: | if ! command -v ssh &> /dev/null; then if command -v apk &> /dev/null; then apk add --no-cache openssh-client elif command -v apt-get &> /dev/null; then apt-get update && apt-get install -y openssh-client fi fi - name: Setup SSH key run: | mkdir -p ~/.ssh echo "${{ secrets.DEPLOY_KEY }}" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts 2>/dev/null - name: Deploy via SSH run: | ssh -o StrictHostKeyChecking=no ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} << 'ENDSSH' cd ${{ secrets.DEPLOY_PATH }} docker compose pull docker compose up -d --remove-orphans docker image prune -f ENDSSH