71 lines
2.3 KiB
YAML
71 lines
2.3 KiB
YAML
name: Create and publish a Docker image
|
||
|
||
on:
|
||
push:
|
||
branches: ["main"]
|
||
|
||
env:
|
||
REGISTRY: git.zetcraft.ru
|
||
|
||
jobs:
|
||
publish:
|
||
runs-on: ubuntu-latest
|
||
name: Publish image
|
||
container: catthehacker/ubuntu:act-latest
|
||
permissions:
|
||
contents: read
|
||
packages: write
|
||
|
||
steps:
|
||
- name: Checkout repository
|
||
uses: actions/checkout@v3
|
||
|
||
- name: Log in to the Container registry
|
||
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
|
||
with:
|
||
registry: ${{ env.REGISTRY }}
|
||
username: ${{ gitea.actor }}
|
||
password: ${{ secrets.TOKEN }}
|
||
|
||
- name: Extract metadata (tags, labels) for Docker
|
||
id: meta
|
||
uses: https://github.com/docker/metadata-action@v4
|
||
with:
|
||
images: ${{ env.REGISTRY }}/${{ gitea.repository }}
|
||
|
||
- name: Build and push Docker image
|
||
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
|
||
with:
|
||
context: ./
|
||
push: true
|
||
tags: ${{ steps.meta.outputs.tags }}
|
||
labels: ${{ steps.meta.outputs.labels }}
|
||
deploy:
|
||
needs: publish
|
||
name: Deploy image
|
||
runs-on: ubuntu-latest
|
||
|
||
steps:
|
||
- name: install ssh keys
|
||
# check this thread to understand why its needed:
|
||
# <https://stackoverflow.com/a/70447517>
|
||
run: |
|
||
install -m 600 -D /dev/null ~/.ssh/id_rsa
|
||
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
|
||
ssh-keyscan -H ${{ secrets.SSH_HOST }} > ~/.ssh/known_hosts
|
||
- name: connect and pull
|
||
run: ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "cd ${{ secrets.WORK_DIR }} && docker compose pull && docker compose up -d && docker image prune && exit"
|
||
- name: cleanup
|
||
run: rm -rf ~/.ssh
|
||
- name: send telegram message on deploy
|
||
uses: appleboy/telegram-action@master
|
||
with:
|
||
to: ${{ secrets.TELEGRAM_TO }}
|
||
token: ${{ secrets.TELEGRAM_TOKEN }}
|
||
disable_web_page_preview: true
|
||
format: markdown
|
||
message: |
|
||
🚀ОБНОВА УЖЕ НА СЕРВЕРЕ🚀
|
||
${{ gitea.actor }} залил коммит: ${{ gitea.event.commits[0].message }}
|
||
Который успешно задеплоился на сервере!
|
||
[Открыть](${{ secrets.DEPLOYED_URL }}) |