Skip to content
This repository has been archived by the owner on Nov 6, 2023. It is now read-only.

Bump and build

Bump and build #17

name: Bump and build
on:
workflow_dispatch:
inputs:
bump:
description: 'Bump rule'
required: true
default: prerelease
type: choice
options:
- major
- minor
- patch
- prerelease
- premajor
- preminor
- prepatch
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository_owner }}/${{ github.event.repository.name }}
jobs:
version:
name: 'Determine release version'
runs-on: ubuntu-latest
outputs:
version: ${{ steps.set_new_version.outputs.version }}
steps:
- name: Checkout the repository
uses: actions/checkout@v2
- name: Get the latest tag
id: get-latest-tag
uses: actions-ecosystem/action-get-latest-tag@v1
with:
semver_only: true
- uses: actions-ecosystem/action-bump-semver@v1
if: github.event_name == 'workflow_dispatch'
id: bump-semver
with:
current_version: ${{ steps.get-latest-tag.outputs.tag }}
level: ${{ github.event.inputs.bump }}
- name: Set new version
id: set_new_version
run: |
echo "version=${{ steps.bump-semver.outputs.new_version }}" >> $GITHUB_OUTPUT
build_push:
needs: version
name: 'Build and Push image to registry'
runs-on: ubuntu-latest
steps:
- name: Echo new version
run: |
echo 'New version:' ${{needs.version.outputs.version}}
- name: Checkout repository
uses: actions/checkout@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.ORG_TOKEN_GHCR }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v3
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Build and push Docker image
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: ${{env.REGISTRY}}/${{env.IMAGE_NAME}}:${{needs.version.outputs.version}}
labels: ${{ steps.meta.outputs.labels }}
commit_version:
needs: version
name: 'Commit project version to github'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-create: false
- name: Patch package version
run: poetry version ${{needs.version.outputs.version}}
- name: Update repository with up-to-date submodules and version
run: |
git config --global user.email "opendatadiscovery-bot@provectus.com"
git config --global user.name "OpenDataDiscovery Bot"
if [ -n "$(git status --porcelain)" ]
then
git add .
git commit -m "chore:bump package version"
git push origin main
git tag ${{needs.version.outputs.version}}
git push origin ${{needs.version.outputs.version}}
fi