Skip to content

Commit

Permalink
feat: modify action to build and consume container
Browse files Browse the repository at this point in the history
To speed things up further, we can build and release the actual container on release publication, and then have the action itself consume the image instead of the Dockerfile.

Additionally, we can force the release process to use the latest set of changes by defining a local GHA that uses the Dockerfile instead.
I've proven this works at https://github.com/weierophinney/test-local-action/, where I observed that the build happens relative to the checkout directory, and not to where the action is defined.

Signed-off-by: Matthew Weier O'Phinney <[email protected]>
  • Loading branch information
weierophinney committed Mar 3, 2021
1 parent 259ad12 commit 98bf124
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 6 deletions.
20 changes: 20 additions & 0 deletions .github/actions/automatic-releases/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Definition of the github action
# as per https://docs.github.com/en/actions/creating-actions/creating-a-docker-container-action

name: 'laminas/automatic-releases'
description: 'Automates automatic releases for semver-compliant repositories'

inputs:
command-name:
description: |
Command to execute: one of
* `laminas:automatic-releases:release`
* `laminas:automatic-releases:create-merge-up-pull-request`
* `laminas:automatic-releases:switch-default-branch-to-next-minor`
required: true

runs:
using: 'docker'
image: '../../../Dockerfile'
args:
- ${{ inputs.command-name }}
10 changes: 5 additions & 5 deletions .github/workflows/automatic-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
uses: "actions/checkout@v2"

- name: "Release"
uses: "./"
uses: "./.github/actions/automatic-releases/"
with:
command-name: "laminas:automatic-releases:release"
env:
Expand All @@ -27,7 +27,7 @@ jobs:
"GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }}

- name: "Create Merge-Up Pull Request"
uses: "./"
uses: "./.github/actions/automatic-releases/"
with:
command-name: "laminas:automatic-releases:create-merge-up-pull-request"
env:
Expand All @@ -37,7 +37,7 @@ jobs:
"GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }}

- name: "Create and/or Switch to new Release Branch"
uses: "./"
uses: "./.github/actions/automatic-releases/"
with:
command-name: "laminas:automatic-releases:switch-default-branch-to-next-minor"
env:
Expand All @@ -47,7 +47,7 @@ jobs:
"GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }}

- name: "Bump Changelog Version On Originating Release Branch"
uses: "./"
uses: "./.github/actions/automatic-releases/"
with:
command-name: "laminas:automatic-releases:bump-changelog"
env:
Expand All @@ -57,7 +57,7 @@ jobs:
"GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }}

- name: "Create new milestones"
uses: "./"
uses: "./.github/actions/automatic-releases/"
with:
command-name: "laminas:automatic-releases:create-milestones"
env:
Expand Down
47 changes: 47 additions & 0 deletions .github/workflows/build-and-push-containers.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Build and push containers

on:
release:
types: [published]

jobs:
tags:
runs-on: ubuntu-latest
outputs:
tags: ${{ steps.tags.outputs.tags }}
steps:
- name: Compile tag list
id: tags
run: |
TAG=${GITHUB_REF/refs\/tags\//}
PREFIX=ghcr.io/laminas/automatic-releases
MAJOR="${PREFIX}:$(echo ${TAG} | cut -d. -f1)"
MINOR="${MAJOR}.$(echo ${TAG} | cut -d. -f2)"
PATCH="${PREFIX}:${TAG}"
echo "::set-output name=tags::${MAJOR}%0A${MINOR}%0A${PATCH}"
release-container:
runs-on: ubuntu-latest
needs: [tags]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup QEMU
uses: docker/setup-qemu-action@v1
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ secrets.CONTAINER_USERNAME }}
password: ${{ secrets.CONTAINER_PAT }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
platforms: linux/amd64
push: true
tags: ${{ needs.tags.outputs.tags }}

2 changes: 1 addition & 1 deletion action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ inputs:

runs:
using: 'docker'
image: 'Dockerfile'
image: 'docker://ghcr.io/laminas/automatic-releases:1'
args:
- ${{ inputs.command-name }}

0 comments on commit 98bf124

Please sign in to comment.