Skip to content

Commit

Permalink
Add github actions to check and release new PRs
Browse files Browse the repository at this point in the history
  • Loading branch information
Michionlion committed Sep 11, 2020
1 parent 15ed218 commit 63390a6
Show file tree
Hide file tree
Showing 4 changed files with 175 additions and 0 deletions.
20 changes: 20 additions & 0 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Check

on:
- push
- pull_request

jobs:
build:
name: Lint code
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Lint Dockerfile
run: |
docker run --rm -i hadolint/hadolint < Dockerfile
- name: Lint Markdown
run: |
sudo gem install mdl
mdl README.md
76 changes: 76 additions & 0 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Docker

on:
push:
# Publish `master` as Docker `latest` image.
branches:
- master

# Publish `v1.2.3` tags as releases.
tags:
- v*

# Run tests for any PRs.
pull_request:

env:
# TODO: Change variable to your image's name.
IMAGE_NAME: dockagator

jobs:
# Run tests.
# See also https://docs.docker.com/docker-hub/builds/automated-testing/
test-compile:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Build image
run: |
if [ -f docker-compose.test.yml ]; then
docker-compose --file docker-compose.test.yml build
docker-compose --file docker-compose.test.yml run sut
else
docker build . --file Dockerfile
fi
# Push image to GitHub Packages.
# See also https://docs.docker.com/docker-hub/builds/
push:
# Ensure test job passes before pushing image.
needs: test

runs-on: ubuntu-latest
if: github.event_name == 'push'

steps:
- uses: actions/checkout@v2

- name: Build image
run: docker build . --file Dockerfile --tag $IMAGE_NAME

- name: Log into registry
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login docker.pkg.github.com -u ${{ github.actor }} --password-stdin

- name: Push image
run: |
IMAGE_ID=docker.pkg.github.com/${{ github.repository }}/$IMAGE_NAME
# Change all uppercase to lowercase
IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
# Strip git ref prefix from version
VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,')
# Strip "v" prefix from tag name
[[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//')
# Use Docker `latest` tag convention
[ "$VERSION" == "master" ] && VERSION=latest
echo IMAGE_ID=$IMAGE_ID
echo VERSION=$VERSION
docker tag $IMAGE_NAME $IMAGE_ID:$VERSION
docker push $IMAGE_ID:$VERSION
43 changes: 43 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Create Release

on:
push:
branches:
- master

jobs:
bump-tag-version:
name: Bump and Tag Version
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: jefflinse/pr-semver-bump@v1
name: Bump and Tag Version
id: bump-tag-version
with:
mode: bump
repo-token: ${{ secrets.GITHUB_TOKEN }}
major-label: major
minor-label: minor
patch-label: patch
require-release-notes: true
release-notes-prefix: "# Release notes"
with-v: true
- name: Print Released Metadata
run: |
echo Old Version: ${{ steps.bump-tag-version.outputs.old-version }}
echo New Version: ${{ steps.bump-tag-version.outputs.version }}
echo Release Notes: ${{ steps.bump-tag-version.outputs.release-notes }}
- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.bump-tag-version.outputs.version }}
release_name: Release ${{ steps.bump-tag-version.outputs.version }}
body: >
Release ${{ steps.bump-tag-version.outputs.version }} of the DockaGator docker image.
See [`README.md`](https://github.com/GatorEducator/dockagator/blob/${{ steps.bump-tag-version.outputs.version }}/README.md)
for example commands and more details.
draft: false
prerelease: false
36 changes: 36 additions & 0 deletions .github/workflows/validate-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: PR

on:
pull_request:
types:
- labeled
- unlabeled
- opened
- edited
- reopened
- synchronize
- ready_for_review

jobs:
check-pr:
name: Validate PR Release Label and Notes
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: jefflinse/pr-semver-bump@v1
name: Validate PR Metadata
id: validate-pr-metadata
with:
mode: validate
repo-token: ${{ secrets.GITHUB_TOKEN }}
major-label: major
minor-label: minor
patch-label: patch
require-release-notes: true
release-notes-prefix: "# Release notes"
with-v: true
- name: Print Detected Metadata
run: |
echo Old Version: ${{ steps.validate-pr-metadata.outputs.old-version }}
echo New Version: ${{ steps.validate-pr-metadata.outputs.version }}
echo Release Notes: ${{ steps.validate-pr-metadata.outputs.release-notes }}

0 comments on commit 63390a6

Please sign in to comment.