name: Docker image building and publishing onto Production on: push: tags: - "*" jobs: build-and-push: if: github.repository == 'SayaAndy/saya-today-web' runs-on: ubuntu-latest environment: Production permissions: packages: write steps: - name: Checkout uses: actions/checkout@v6 - name: Generate output.css with tailwindcss uses: ZoeyVid/tailwindcss-update@main with: input: static/input.css output: static/output.css params: "--minify" - name: Set up QEMU uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Login to GitHub Container Registry uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GHCR_TOKEN }} - name: Build and push uses: docker/build-push-action@v7 with: context: . file: ./Dockerfile push: true cache-from: type=gha cache-to: type=gha,mode=max tags: | ghcr.io/sayaandy/saya-today-web:latest ghcr.io/sayaandy/saya-today-web:stable ghcr.io/sayaandy/saya-today-web:${{ github.ref_name }} deploy: if: github.repository == 'SayaAndy/saya-today-web' runs-on: ubuntu-latest environment: Production needs: [build-and-push] container: image: ghcr.io/ansible/community-ansible-dev-tools:v26.4.6 options: --user root steps: - name: Checkout uses: actions/checkout@v6 - name: Install community.docker collection run: ansible-galaxy collection install community.docker - name: Set up SSH connection for uz.saya.casa run: | mkdir -p ~/.ssh (cat < ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 sed -i 's/\r$//' ~/.ssh/id_ed25519 ssh-keyscan -H uz.saya.casa >> ~/.ssh/known_hosts - name: Test SSH connection run: | ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ~/.ssh/id_ed25519 svc_github@uz.saya.casa "echo 'SSH connection successful'" - name: Run Ansible playbook env: ANSIBLE_HOST_KEY_CHECKING: "False" working-directory: ./deploy run: | ansible-playbook \ playbook.yml \ -i inventory.yml \ -l prod \ --private-key ~/.ssh/id_ed25519 \ -u svc_github \ -e saya_today_web_auth_salt="${{ secrets.AUTH_SALT }}" \ -e saya_today_web_s3_access_key_id="${{ secrets.S3_ACCESS_KEY_ID }}" \ -e saya_today_web_s3_secret_access_key="${{ secrets.S3_SECRET_ACCESS_KEY }}" \ -e saya_today_web_environment=prod \ -e saya_today_web_tag=${{ github.ref_name }} \ -e saya_today_web_mail_salt="${{ secrets.MAIL_SALT }}" \ -e saya_today_web_mail_host="${{ secrets.MAIL_HOST }}" \ -e saya_today_web_mail_address="${{ secrets.MAIL_ADDRESS }}" \ -e saya_today_web_mail_username="${{ secrets.MAIL_USERNAME }}" \ -e saya_today_web_mail_password="${{ secrets.MAIL_PASSWORD }}" \ -e saya_today_google_site_verification="${{ secrets.GOOGLE_SITE_VERIFICATION }}" \ -e saya_today_yandex_verification="${{ secrets.YANDEX_VERIFICATION }}" \ -e saya_today_bing_verification="${{ secrets.BING_VERIFICATION }}"