Skip to content

Commit

Permalink
Reuse workflows
Browse files Browse the repository at this point in the history
Instead of copy pasting a lot of code between workflows, we reuse
"atomic" workflows. In particular we fix the workflow that bumps the
version and we add one that solely build and publishes a docker image.

Also:
* Support submodules in docker-release-only workflow
* Rename "new_tag" -> "new_ver"
* Bump jasonamyers/github-bumpversion-action to 1.0.5
* Uniformize job names
* Remove `workdir` option (it wasn't used anywhere)
  • Loading branch information
simlmx committed Mar 20, 2023
1 parent 09e35fe commit 46ca1a7
Show file tree
Hide file tree
Showing 6 changed files with 127 additions and 155 deletions.
15 changes: 12 additions & 3 deletions .github/workflows/bump-version.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,25 @@
# Bump the version of the repo and push the new version in a new commit.

name: Bump version

on:
workflow_call:
outputs:
new_ver:
description: New version number
value: ${{ jobs.bump-version.outputs.new_ver }}


jobs:
build:
bump-version:
runs-on: ubuntu-latest
outputs:
new_tag: ${{ steps.bumper.outputs.new_ver }}
new_ver: ${{ steps.bumper.outputs.new_ver }}
steps:
- uses: actions/checkout@v2
- name: Bump version and push tag
id: bumper
uses: jasonamyers/[email protected].3
uses: jasonamyers/[email protected].5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Push changes
Expand Down
72 changes: 72 additions & 0 deletions .github/workflows/docker-release-only.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Build and release a docker to Docker Hub

name: Docker release

on:
workflow_call:
secrets:
DOCKERHUB_USERNAME:
required: true
DOCKERHUB_TOKEN:
required: true
inputs:
image_base_name:
required: true
type: string
docker_file:
required: false
type: string
default: Dockerfile
tag_value:
required: true
type: string
checkout_submodules:
description: Forwarded to `submodule` input of the `actions/checkout` step.
type: boolean
required: false
# Default: false
# See: https://github.com/actions/checkout/tree/v2
default: false

jobs:
docker-release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
ref: main
submodules: ${{ inputs.checkout_submodules }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v3
with:
# list of Docker images to use as base name for tags
# TODO make more flexible
images: |
openclimatefix/${{ inputs.image_base_name }}
tags: |
type=raw,value=${{ inputs.tag_value }}
flavor: |
latest=true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: openclimatefix
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ${{ inputs.docker_file }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
67 changes: 12 additions & 55 deletions .github/workflows/docker-release.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
# Shortcut that runs both
# * bump-version.yml
# * docker-release-only.yml

name: Bump version and auto-release

on:
workflow_call:
secrets:
Expand All @@ -17,61 +22,13 @@ on:

jobs:
bump-version:
runs-on: ubuntu-latest
outputs:
new_tag: ${{ steps.bumper.outputs.new_ver }}
steps:
- uses: actions/checkout@v2
- name: Bump version
id: bumper
uses: jasonamyers/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Push changes
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
tags: true
uses: openclimatefix/.github/.github/workflows/[email protected]

docker-release:
needs: [bump-version]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
ref: main
- run: echo ${{ needs.bump-version.outputs.new_tag }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v3
with:
# list of Docker images to use as base name for tags
# TODO make more flexible
images: |
openclimatefix/${{ inputs.image_base_name }}
tags: |
type=raw,value=${{ needs.bump-version.outputs.new_tag }}
flavor: |
latest=true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: openclimatefix
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ${{ inputs.docker_file }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
uses: openclimatefix/.github/.github/workflows/[email protected]
with:
image_base_name: ${{inputs.image_base_name}}
docker_file: ${{inputs.docker_file}}
tag_value: ${{ needs.bump-version.outputs.new_ver }}
secrets: inherit
79 changes: 21 additions & 58 deletions .github/workflows/python-docker-release.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# Shortcut to run the following:
# * bump-version.yml
# * Publish the python package
# * Create a release in github
# * docker-release-only.yml

name: Bump version and auto-release
on:
workflow_call:
Expand All @@ -18,22 +24,14 @@ on:
default: Dockerfile

jobs:
bump-version:
uses: openclimatefix/.github/.github/workflows/[email protected]

build:
needs: [bump-version]
runs-on: ubuntu-latest
outputs:
new_tag: ${{ steps.bumper.outputs.new_ver }}
steps:
- uses: actions/checkout@v2
- name: Bump version and push tag
id: bumper
uses: jasonamyers/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Push changes
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
tags: true
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v2
with:
Expand All @@ -51,10 +49,9 @@ jobs:
password: ${{ secrets.token }}

python-release:
needs: [build]
needs: [bump-version, build]
runs-on: ubuntu-latest
steps:
- run: echo ${{needs.build.outputs.new_tag}}
- name: Changelog
uses: scottbrenner/generate-changelog-action@master
id: Changelog
Expand All @@ -66,52 +63,18 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ needs.build.outputs.new_tag }}
release_name: v${{ needs.build.outputs.new_tag }}
tag_name: v${{ needs.bump-version.outputs.new_ver }}
release_name: v${{ needs.bump-version.outputs.new_ver }}
body: |
${{ steps.Changelog.outputs.changelog }}
draft: false
prerelease: false

docker-release:
needs: [build, python-release]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
ref: main
- run: echo ${{ needs.build.outputs.new_tag }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v3
with:
# list of Docker images to use as base name for tags
# TODO make more flexible
images: |
openclimatefix/${{ inputs.image_base_name }}
tags: |
type=raw,value=${{ needs.build.outputs.new_tag }}
flavor: |
latest=true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: openclimatefix
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ${{ inputs.docker_file }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
needs: [bump-version, build, python-release]
uses: openclimatefix/.github/.github/workflows/[email protected]
with:
image_base_name: ${{inputs.image_base_name}}
docker_file: ${{inputs.docker_file}}
tag_value: ${{ needs.bump-version.outputs.new_ver }}
secrets: inherit
41 changes: 10 additions & 31 deletions .github/workflows/python-release.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,17 @@
name: Bump version and auto-release
on:
workflow_call:
inputs:
workdir:
description: 'The directory of the root of the python project'
default: '.'
required: false
type: string
secrets:
token:
required: true

jobs:
bump-version:
uses: openclimatefix/.github/.github/workflows/[email protected]

build:
needs: [bump-version]
runs-on: ubuntu-latest
defaults:
run:
working-directory: ${{ inputs.workdir }}

steps:
- uses: actions/checkout@v3
Expand All @@ -32,30 +27,15 @@ jobs:
run: python -m build

publish:
needs: [bump-version, build]
runs-on: ubuntu-latest
defaults:
run:
working-directory: ${{ inputs.workdir }}
needs: ["build"]
outputs:
new_tag: ${{ steps.bumper.outputs.new_ver }}

steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Bump version
id: bumper
uses: jasonamyers/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SOURCE: ${{ inputs.workdir }}
- name: Push changes
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
tags: true

- name: Set up Python
uses: actions/setup-python@v2
with:
Expand All @@ -71,14 +51,13 @@ jobs:
with:
user: __token__
password: ${{ secrets.token }}
packages_dir: ${{ inputs.workdir }}/dist
packages_dir: ./dist

release:
needs: [publish]
needs: [bump-version, publish]
runs-on: ubuntu-latest

steps:
- run: echo ${{needs.publish.outputs.new_tag}}
- name: Changelog
uses: scottbrenner/generate-changelog-action@master
id: Changelog
Expand All @@ -90,8 +69,8 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ needs.publish.outputs.new_tag }}
release_name: v${{ needs.publish.outputs.new_tag }}
tag_name: v${{ needs.bump-version.outputs.new_ver }}
release_name: v${{ needs.bump-version.outputs.new_ver }}
body: |
${{ steps.Changelog.outputs.changelog }}
draft: false
Expand Down
Loading

0 comments on commit 46ca1a7

Please sign in to comment.