From 6c9dd9c3958cc836c773fb9f36af587d48d13f8e Mon Sep 17 00:00:00 2001 From: Rajpal Chauhan Date: Thu, 16 Nov 2023 22:59:07 -0800 Subject: [PATCH] feat: added workflows to delete images and deployment --- .github/workflows/delete_images.yaml | 33 +++++++++++++++ .github/workflows/delete_pr_closed_job.yml | 47 ++++++++++++++++++++++ .github/workflows/stale.yaml | 20 +++++++++ 3 files changed, 100 insertions(+) create mode 100644 .github/workflows/delete_images.yaml create mode 100644 .github/workflows/delete_pr_closed_job.yml create mode 100644 .github/workflows/stale.yaml diff --git a/.github/workflows/delete_images.yaml b/.github/workflows/delete_images.yaml new file mode 100644 index 000000000..9f5d4a2dd --- /dev/null +++ b/.github/workflows/delete_images.yaml @@ -0,0 +1,33 @@ +name: Delete old container images + +on: + schedule: + - cron: "0 0 * * 2" # every Tuesday + + +jobs: + clean-ghcr: + name: Delete old unused container images + runs-on: ubuntu-latest + steps: + - name: Delete containers older than a Month + uses: snok/container-retention-policy@v2 + with: + image-names: traction-plugins-acapy, traction-tenant-proxy, traction-tenant-ui + cut-off: One month ago UTC + account-type: org + org-name: ${{ github.repository_owner}} + skip-tags: pr-* , *.*.* + untagged-only: true + token: ${{ secrets.PAT }} + + - name: Delete all test containers older than a month, using a wildcard + uses: snok/container-retention-policy@v2 + with: + image-names: python-test*, js-test* + cut-off: One month ago UTC + account-type: org + org-name: my-org + keep-at-least: 1 + skip-tags: latest + token: ${{ secrets.PAT }} \ No newline at end of file diff --git a/.github/workflows/delete_pr_closed_job.yml b/.github/workflows/delete_pr_closed_job.yml new file mode 100644 index 000000000..bbdf0c7b2 --- /dev/null +++ b/.github/workflows/delete_pr_closed_job.yml @@ -0,0 +1,47 @@ +name: Clean up +on: + pull_request: + branches: + - main + types: + - closed + workflow_dispatch: + +jobs: + uninstall: + if: (github.repository == 'bcgov/traction') || (github.event_name == 'workflow_dispatch') + name: Uninstall PR + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + + - name: Authenticate and set context + uses: redhat-actions/oc-login@v1 + with: + openshift_server_url: ${{ secrets.OPENSHIFT_SERVER }} + openshift_token: ${{ secrets.OPENSHIFT_TOKEN }} + certificate_authority_data: ${{ secrets.OPENSHIFT_CA_CRT }} + namespace: ${{ secrets.OPENSHIFT_NAMESPACE }} + + - name: Uninstall Traction PR Helm + run: | + helm uninstall -n ${{ secrets.OPENSHIFT_NAMESPACE }} pr-${{ github.event.number }}-traction + + - name: Remove Traction Openshift Objects + continue-on-error: true + run: | + oc delete -n ${{ secrets.OPENSHIFT_NAMESPACE }} all,secret,pod,networkpolicy,configmap,pvc --selector "app.kubernetes.io/instance"=pr-${{ github.event.number }}-traction + + clean-ghcr: + runs-on: ubuntu-20.04 + name: Delete closed or stale pr images + steps: + - name: Delete containers + uses: snok/container-retention-policy@v2 + with: + image-names: traction-plugins-acapy, traction-tenant-proxy, traction-tenant-ui + cut-off: One month ago UTC + account-type: org + org-name: ${{ github.repository_owner}} + filter-tags: ${{ github.event.number }} + token: ${{ secrets.PAT }} \ No newline at end of file diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml new file mode 100644 index 000000000..551febf27 --- /dev/null +++ b/.github/workflows/stale.yaml @@ -0,0 +1,20 @@ +name: 'Close stale issues and PRs' +on: + schedule: + - cron: '30 1 * * *' + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v8 + with: + stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.' + stale-pr-message: 'This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 10 days.' + close-issue-message: 'This issue was closed because it has been stalled for 5 days with no activity.' + close-pr-message: 'This PR was closed because it has been stalled for 10 days with no activity.' + days-before-issue-stale: 30 + days-before-pr-stale: 45 + days-before-issue-close: 5 + days-before-pr-close: 10 + \ No newline at end of file