Skip to content

Commit

Permalink
feat: add gh workflows (#265)
Browse files Browse the repository at this point in the history
  • Loading branch information
vutkin authored Jan 31, 2023
1 parent b0263a9 commit 7be6abc
Show file tree
Hide file tree
Showing 18 changed files with 1,199 additions and 100 deletions.
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ alpline
.*
tests
*-example.toml
.golangci.yml
*.md
*.pc
dist
34 changes: 34 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Description

<!--- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. -->

Fixes # (issue)

## Type of change

Please delete options that are not relevant.

- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] This change requires a documentation update

# How Has This Been Tested?

<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, and the tests you ran to -->
<!--- see how your change affects other areas of the code, etc. -->

## Screenshots (if appropriate):

# Checklist:

- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published in downstream modules
- [ ] Updated version in Makefile respecting [semver v2](https://semver.org/spec/v2.0.0.html)
Empty file.
7 changes: 7 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
version: 2
updates:
- package-ecosystem: "gomod"
directory: "/"
schedule:
# Check for updates to GitHub Actions every weekday
interval: "daily"
16 changes: 16 additions & 0 deletions .github/issue_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
## I'm submitting a ...

- [ ] bug report
- [ ] feature request

## What is the current behavior?

## If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem

## What is the expected behavior?

## What is the motivation / use case for changing the behavior?

## Please tell us about your environment:

Version: X.Y.Z
20 changes: 20 additions & 0 deletions .github/workflow-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"go-version": "1.19.4",
"deploy": {
"pull-request": true,
"sign-docker-image": false,
"pull-request-images": [
{
"name": "ubuntu"
}
],
"release-images": [
{
"name": "ubuntu"
},
{
"name": "oraclelinux"
}
]
}
}
92 changes: 92 additions & 0 deletions .github/workflows/pull-request-cleanup-manual.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: "[Manual] Pull Request Cleanup"

on:
workflow_dispatch:
inputs:
pattern:
description: |
Tags pattern filter
required: true
type: string
default: "rc.pr-"

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false

env:
PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
PULL_REQUEST_BRANCH: ${{ github.head_ref }}
IMAGE_NAME: "ghcr.io/${{ github.repository }}"
PACKAGE_NAME: oracledb_exporter
PACKAGE_TYPE: container
USERNAME: ${{ github.repository_owner }}

jobs:
cleanup-ghcr:
runs-on: ubuntu-latest
name: "cleanup ghcr / ${{ github.event.inputs.pattern }}"
steps:
- name: Cleanup versions
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
FILTER: ${{ github.event.inputs.pattern }}
run: |
gh api \
-H "Accept: application/vnd.github+json" \
"/users/${{ env.USERNAME }}/packages/${{ env.PACKAGE_TYPE }}/${{ env.PACKAGE_NAME }}/versions" > versions.json
VERSIONS=$(jq -r '.[] | select(.metadata.container.tags[] | test("${{ env.FILTER }}")) | .id' versions.json)
for VERSION in $(echo -n "$VERSIONS")
do
TAG=$(jq -r \
--arg VERSION "$VERSION" \
'.[] | select(.id | tostring | test($VERSION)) | .metadata.container.tags | join(",")' \
versions.json
)
DIGEST=$(jq -r \
--arg VERSION "$VERSION" \
'.[] | select(.id | tostring | test($VERSION)) | .name' \
versions.json
)
echo "deleting ${IMAGE_NAME}:${TAG} with digest=${DIGEST}"
echo "deleting package PACKAGE_VERSION_ID=${VERSION}"
# https://github.com/cli/cli/issues/3937
echo -n | gh api \
--silent \
--method DELETE \
-H "Accept: application/vnd.github+json" \
"/users/${{ env.USERNAME }}/packages/${{ env.PACKAGE_TYPE }}/${{ env.PACKAGE_NAME }}/versions/$VERSION" \
--input -
done
cleanup-pre-releases:
runs-on: ubuntu-latest
name: "cleanup pre-releases / ${{ github.event.inputs.pattern }}"
steps:
- name: Cleanup releases
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
FILTER: ${{ github.event.inputs.pattern }}
run: |
gh api \
-H "Accept: application/vnd.github+json" \
"/repos/${{ github.repository }}/releases" \
--jq='.[] | select(.prerelease=false) | select(.tag_name | test("${{ env.FILTER }}"))' > versions.json
VERSIONS=$(jq -r '.id' versions.json)
for VERSION in $(echo -n "$VERSIONS")
do
RELEASE=$(jq -r \
--arg VERSION "$VERSION" \
'select(.id | tostring | test($VERSION)) | .name' \
versions.json
)
echo "deleting release \"$RELEASE\" with RELEASE_ID=${VERSION}"
# https://github.com/cli/cli/issues/3937
echo -n | gh api \
--silent \
--method DELETE \
-H "Accept: application/vnd.github+json" \
"/repos/${{ github.repository }}/releases/$VERSION" \
--input -
done
86 changes: 86 additions & 0 deletions .github/workflows/pull-request-cleanup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: Pull Request Cleanup

on:
pull_request:
types: [closed]

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false

env:
PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
PULL_REQUEST_BRANCH: ${{ github.head_ref }}
IMAGE_NAME: "ghcr.io/${{ github.repository }}"
PACKAGE_NAME: oracledb_exporter
PACKAGE_TYPE: container
USERNAME: ${{ github.repository_owner }}

jobs:
cleanup-ghcr:
runs-on: ubuntu-latest
name: "cleanup ghcr"
steps:
- name: Cleanup versions
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
FILTER: rc.pr-${{ env.PULL_REQUEST_NUMBER }}
run: |
gh api \
-H "Accept: application/vnd.github+json" \
"/users/${{ env.USERNAME }}/packages/${{ env.PACKAGE_TYPE }}/${{ env.PACKAGE_NAME }}/versions" > versions.json
VERSIONS=$(jq -r '.[] | select(.metadata.container.tags[] | test("${{ env.FILTER }}")) | .id' versions.json)
for VERSION in $(echo -n "$VERSIONS")
do
TAG=$(jq -r \
--arg VERSION "$VERSION" \
'.[] | select(.id | tostring | test($VERSION)) | .metadata.container.tags | join(",")' \
versions.json
)
DIGEST=$(jq -r \
--arg VERSION "$VERSION" \
'.[] | select(.id | tostring | test($VERSION)) | .name' \
versions.json
)
echo "deleting ${IMAGE_NAME}:${TAG} with digest=${DIGEST}"
echo "deleting package PACKAGE_VERSION_ID=${VERSION}"
# https://github.com/cli/cli/issues/3937
echo -n | gh api \
--silent \
--method DELETE \
-H "Accept: application/vnd.github+json" \
"/users/${{ env.USERNAME }}/packages/${{ env.PACKAGE_TYPE }}/${{ env.PACKAGE_NAME }}/versions/$VERSION" \
--input -
done
cleanup-pre-releases:
runs-on: ubuntu-latest
name: "cleanup pre-releases"
steps:
- name: Cleanup releases
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
FILTER: rc.pr-${{ env.PULL_REQUEST_NUMBER }}
run: |
gh api \
-H "Accept: application/vnd.github+json" \
"/repos/${{ github.repository }}/releases" \
--jq='.[] | select(.prerelease=false) | select(.tag_name | test("${{ env.FILTER }}"))' > versions.json
VERSIONS=$(jq -r '.id' versions.json)
for VERSION in $(echo -n "$VERSIONS")
do
RELEASE=$(jq -r \
--arg VERSION "$VERSION" \
'select(.id | tostring | test($VERSION)) | .name' \
versions.json
)
echo "deleting release \"$RELEASE\" with RELEASE_ID=${VERSION}"
# https://github.com/cli/cli/issues/3937
echo -n | gh api \
--silent \
--method DELETE \
-H "Accept: application/vnd.github+json" \
"/repos/${{ github.repository }}/releases/$VERSION" \
--input -
done
Loading

0 comments on commit 7be6abc

Please sign in to comment.