Skip to content

Commit

Permalink
Reuse workflows - second attempt
Browse files Browse the repository at this point in the history
Instead of copy pasting a lot of code between workflows, we reuse
simpler workflows. These are new:

* bump-version
* github-release
* publish-to-pypi
* push-docker

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 28, 2023
1 parent 0debae2 commit d75d67a
Show file tree
Hide file tree
Showing 8 changed files with 226 additions and 248 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
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
# * push-docker.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
39 changes: 39 additions & 0 deletions .github/workflows/github-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Make a github release

on:
workflow_call:
inputs:
ref:
# This default value is consistent with the actions/checkout default value.
# Note however that if this is called after, say, the bump-version workflow, then
# this won't point to the right commit: use `main` instead in that case.
default: ${{ github.sha }}
type: string
version:
description: Version to release, e.g. "1.0.0"
type: string
required: true


jobs:
github-release:
runs-on: ubuntu-latest
steps:
- name: Changelog
uses: scottbrenner/generate-changelog-action@master
id: Changelog
env:
REPO: ${{ github.repository }}

- name: Create Release
id: create_release
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ inputs.version }}
release_name: v${{ inputs.version }}
body: |
${{ steps.Changelog.outputs.changelog }}
draft: false
prerelease: false
43 changes: 43 additions & 0 deletions .github/workflows/publish-to-pypi.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Publish python package to PYPI

on:
workflow_call:
inputs:
ref:
# This default value is consistent with the actions/checkout default value.
# Note however that if this is called after, say, the bump-version workflow, then
# this won't point to the right commit: use `main` instead in that case.
default: ${{ github.sha }}
type: string
secrets:
token:
required: true


jobs:
publish-python:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
ref: ${{ inputs.ref }}

- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: "3.x"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build
- name: Build package
run: python -m build

- name: Publish package
uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
with:
user: __token__
password: ${{ secrets.token }}
72 changes: 72 additions & 0 deletions .github/workflows/push-docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: Build and publish to Docker Hub

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:
# Using `main` because so far this has always been done *after* a bump-version, which adds
# a commit on top of the default commit to which the action would be otherwise pointing.
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 }}
122 changes: 28 additions & 94 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-to-pypi.yml
# * github-release.yml
# * push-docker.yml

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

jobs:
build:
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
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: "3.x"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build
- name: Build package
run: python -m build
- name: Publish package
uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
with:
user: __token__
password: ${{ secrets.token }}
bump-version:
uses: openclimatefix/.github/.github/workflows/[email protected]

publish-to-pypi:
needs: [bump-version]
uses: openclimatefix/.github/.github/workflows/[email protected]
with:
# We need this because we want to use the new commits from the `bump-version` job.
ref: main
secrets: inherit

python-release:
needs: [build]
runs-on: ubuntu-latest
steps:
- run: echo ${{needs.build.outputs.new_tag}}
- name: Changelog
uses: scottbrenner/generate-changelog-action@master
id: Changelog
env:
REPO: ${{ github.repository }}
- name: Create Release
id: create_release
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ needs.build.outputs.new_tag }}
release_name: v${{ needs.build.outputs.new_tag }}
body: |
${{ steps.Changelog.outputs.changelog }}
draft: false
prerelease: false
github-release:
needs: [bump-version]
uses: openclimatefix/.github/.github/workflows/[email protected]
with:
version: ${{ needs.bump-version.outputs.new_ver }}

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]
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
Loading

0 comments on commit d75d67a

Please sign in to comment.