From a363945eb8e4ba7d04ec7717ba5f01e83b0293ef Mon Sep 17 00:00:00 2001 From: "Trez.One" Date: Thu, 9 Jan 2025 13:03:54 -0500 Subject: [PATCH] Deployment trigger, Gotify notifications. --- .gitea/workflows/deployment.yml | 68 ++++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 10 deletions(-) diff --git a/.gitea/workflows/deployment.yml b/.gitea/workflows/deployment.yml index 1f07e6ee..498bc67d 100644 --- a/.gitea/workflows/deployment.yml +++ b/.gitea/workflows/deployment.yml @@ -120,8 +120,8 @@ jobs: flarectl dns create --zone "trez.wtf" --name "${subdomain}" --type=CNAME --content "trez.wtf" done - merge-pr-regenerate-readme: - name: PR Merge + regenerate-readme: + name: Update README runs-on: ubuntu-latest if: ${{ always() }} needs: [cloudflare-dns-setup] @@ -152,17 +152,65 @@ jobs: commit_username: gitea-sonarqube-bot commit_message: "docs: regenerate README" + deployment-trigger: + name: Deployment Trigger + if: ${{ always() }} + needs: [generate-readme] + runs-on: ubuntu-latest + outputs: + CONTINUE_JOBS: ${{ steps.deploy-trigger.outputs.CONTINUE_JOBS }} + steps: + - name: PR Merge + run: | + tea login add --name gitea-rinoa --url ${{ secrets.RINOA_GITEA_URL }} --user gitea-sonarqube-bot --password "${{ secrets.BOT_GITEA_PASSWORD }}" --token ${{ secrets.BOT_GITEA_TOKEN }} + pr_index=$(tea pr ls --repo ${{ github.repository }} --state open --fields index,title,head,state --output csv | egrep ${{ gitea.ref_name }} | awk -F, '{print $1}' | sed -e 's|"||g') + tea pr m --repo ${{ github.repository }} --title "Auto Merge of PR #${pr_index} - ${{ gitea.ref_name }}" --message "Merged by ${{ gitea.actor }}" --output table ${pr_index} + + - name: Gotify Notification + uses: eikendev/gotify-action@master + with: + gotify_api_base: '${{ secrets.RINOA_GOTIFY_URL }}' + gotify_app_token: '${{ secrets.RINOA_GOTIFY_TOKEN }}' + notification_title: 'Ready to Deploy' + notification_message: 'Ready to deploy: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/jobs/${{ github.job }}' + + - name: Trigger Deployment + id: deploy-trigger + uses: benhamiltonpro/manual-trigger@v1 + with: + RUN_NAME: "docker-compose-deploy" + + docker-compose-deploy: + name: Merge and Deploy + if: ${{ needs.deployment-trigger.outputs.CONTINUE_JOB == 'manual-step' }} + runs-on: ubuntu-latest + env: + VAULT_ADDR: ${{ secrets.RINOA_VAULT_ADDR }} + VAULT_TOKEN: ${{ secrets.RINOA_VAULT_TOKEN }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: main + - name: Install tea uses: supplypike/setup-bin@v4 with: - uri: https://dl.gitea.com/tea/main/tea-main-linux-amd64 - name: tea - version: main + uri: 'https://gitea.com/gitea/tea/releases/download/v0.9.2/tea-0.9.2-linux-amd64' + name: 'tea' + version: '0.9.2' + + - name: Install Vault + uses: cpanato/vault-installer@main - # - name: PR Merge - # run: | - # tea login add --name gitea-rinoa --url ${{ secrets.RINOA_GITEA_URL }} --user gitea-sonarqube-bot --password "${{ secrets.BOT_GITEA_PASSWORD }}" --token ${{ secrets.BOT_GITEA_TOKEN }} - # pr_index=$(tea pr ls --repo ${{ github.repository }} --state open --fields index,title,head,state --output csv | egrep ${{ gitea.ref_name }} | awk -F, '{print $1}' | sed -e 's|"||g') - # tea pr m --repo ${{ github.repository }} --title "Auto Merge of PR #${pr_index} - ${{ gitea.ref_name }}" --message "Merged by ${{ gitea.actor }}" --output table ${pr_index} + - name: Generate .env file for deployment + run: | + vault kv get -format=json rinoa-docker/env | jq -r '.data.data' | jq -r 'keys[] as $k | "\($k)='\''\(.[$k])'\''"' > .env + - name: Docker Compose Deployment + uses: Autom3/docker-deployment-action@3.0.1 + with: + remote_docker_host: gitea-deploy@192.168.1.254 + ssh_private_key: ${{ secrets.RINOA_GITEA_PRIVATE_SSH_KEY }} + ssh_public_key: ${{ secrets.RINOA_GITEA_PUBLIC_SSH_KEY }} \ No newline at end of file