Delete Droplets #448
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Delete Droplets | |
on: | |
workflow_run: | |
workflows: [Deploy and Test Branch] | |
types: | |
- completed | |
jobs: | |
on-success: | |
runs-on: ubuntu-latest | |
if: ${{ github.event.workflow_run.conclusion == 'success' }} | |
steps: | |
- name: get logs | |
uses: dawidd6/action-download-artifact@v2 | |
with: | |
run_id: ${{ github.event.workflow_run.id}} | |
if_no_artifact_found: warn | |
- name: get server name | |
run: | | |
echo "SERVER=$(cat ./server/server)" >> $GITHUB_ENV | |
- name: get PR | |
env: | |
GH_TOKEN: ${{ github.token }} | |
run: | | |
echo "pull_request=$(gh api -H 'Accept: application/vnd.github+json' -H 'X-Github-Api-Version: 2022-11-28' \ | |
/repos/${{ github.repository}}/actions/runs/${{ github.event.workflow_run.id }} | jq .pull_requests[0].number)" >> $GITHUB_ENV | |
- name: discord success message | |
uses: appleboy/discord-action@master | |
with: | |
webhook_id: ${{ secrets.DISCORD_WEBHOOK_ID }} | |
webhook_token: ${{ secrets.DISCORD_WEBHOOK_TOKEN }} | |
color: "#42f545" | |
username: "GitHub Bot" | |
message: " ${{ github.repository }}:${{ github.event.workflow_run.name }}:PR ${{ env.pull_request }} was successful: droplets from this workflow (tag ${{ github.event.workflow_run.id }}-${{ github.event.workflow_run.run_attempt}}) will be deleted in 15 min" | |
file: ./results/results.log | |
- name: delete droplets | |
if: success() || failure() | |
run: | | |
sleep 15m | |
curl -X DELETE \ | |
-H "Content-Type: application/json" \ | |
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \ | |
"https://api.digitalocean.com/v2/droplets?tag_name=$TAG" | |
env: | |
DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} | |
TAG: ${{ github.event.workflow_run.id }}-${{ github.event.workflow_run.run_attempt }} | |
- name: mark server as available | |
if: success() || failure() | |
uses: appleboy/ssh-action@master | |
with: | |
host: server.${{ env.SERVER }}.clustercat.com | |
username: root | |
key: ${{ secrets.TESTING_SSH_KEY }} | |
script: | | |
rm /tmp/branchtest | |
on-failure: | |
runs-on: ubuntu-latest | |
if: ${{ github.event.workflow_run.conclusion == 'failure' }} | |
steps: | |
- name: get logs | |
uses: dawidd6/action-download-artifact@v2 | |
with: | |
run_id: ${{ github.event.workflow_run.id}} | |
if_no_artifact_found: warn | |
- name: get server name | |
run: | | |
echo "SERVER=$(cat ./server/server)" >> $GITHUB_ENV | |
- name: get PR | |
env: | |
GH_TOKEN: ${{ github.token }} | |
run: | | |
echo "pull_request=$(gh api -H 'Accept: application/vnd.github+json' -H 'X-Github-Api-Version: 2022-11-28' \ | |
/repos/${{ github.repository}}/actions/runs/${{ github.event.workflow_run.id }} | jq .pull_requests[0].number)" >> $GITHUB_ENV | |
- name: discord failure message | |
uses: appleboy/discord-action@master | |
with: | |
webhook_id: ${{ secrets.DISCORD_WEBHOOK_ID }} | |
webhook_token: ${{ secrets.DISCORD_WEBHOOK_TOKEN }} | |
color: "#990000" | |
username: "GitHub Bot" | |
message: " ${{ github.repository}}:${{ github.event.workflow_run.name }}:PR ${{ env.pull_request}} failed: droplets from this workflow (tag ${{ github.event.workflow_run.id }}-${{ github.event.workflow_run.run_attempt }}) will be deleted in 3 hours" | |
file: ./results/results.log | |
- name: discord error message | |
uses: appleboy/discord-action@master | |
with: | |
webhook_id: ${{ secrets.DISCORD_WEBHOOK_ID }} | |
webhook_token: ${{ secrets.DISCORD_WEBHOOK_TOKEN }} | |
color: "#990000" | |
username: "GitHub Bot" | |
message: "errors from ${{ github.event.workflow_run.name }}" | |
file: ./results/errors.log | |
- name: delete droplets | |
if: success() || failure() | |
run: | | |
sleep 3h | |
curl -X DELETE \ | |
-H "Content-Type: application/json" \ | |
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \ | |
"https://api.digitalocean.com/v2/droplets?tag_name=$TAG" | |
env: | |
DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} | |
TAG: ${{ github.event.workflow_run.id }}-${{ github.event.workflow_run.run_attempt }} | |
- name: mark server as available | |
if: success() || failure() | |
uses: appleboy/ssh-action@master | |
with: | |
host: server.${{ env.SERVER }}.clustercat.com | |
username: root | |
key: ${{ secrets.TESTING_SSH_KEY }} | |
script: | | |
rm /tmp/branchtest |