Skip to content

Commit

Permalink
chore: tidy up for v1.x rel
Browse files Browse the repository at this point in the history
  • Loading branch information
YOU54F committed Aug 30, 2023
1 parent 9b5c592 commit fe101db
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 127 deletions.
6 changes: 5 additions & 1 deletion .github/workflows/audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@ jobs:
strategy:
fail-fast: false
matrix:
DOCKER_TARGET_PLATFORM: [linux/arm, linux/arm64, linux/amd64]
DOCKER_TARGET_PLATFORM: [
# linux/arm, # Disabled whilst waiting for next release of trivy with published arm artefacts
linux/arm64,
linux/amd64
]
runs-on: ubuntu-latest
env:
DOCKER_TARGET_PLATFORM: ${{ matrix.DOCKER_TARGET_PLATFORM }}
Expand Down
38 changes: 0 additions & 38 deletions .github/workflows/manual_release_package.yml

This file was deleted.

23 changes: 20 additions & 3 deletions .github/workflows/release_image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,20 @@ on:
- major
- minor
- patch

# Sets the first part of the Docker tag - this will update the VERSION file
version:
description: "Custom version, requires increment to be set"
required: false
tag:
description: "Custom Docker image tag (note - this won't update the VERSION file and is for non-prod releases only)"
required: false
push_to_latest:
description: 'Should push to latest'
type: boolean
default: true
docker_repository:
description: The Docker repository to which the image should be published
default: pactfoundation
jobs:
release:
runs-on: ubuntu-latest
Expand All @@ -35,5 +48,9 @@ jobs:
env:
DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }}
DOCKER_HUB_TOKEN: ${{ secrets.DOCKER_HUB_TOKEN }}
CUSTOM_TAG: ${{ github.event.client_payload.tag }}
INCREMENT: ${{ github.event.inputs.increment }}
DOCKER_IMAGE_ORG_AND_NAME: ${{ github.event.inputs.docker_repository }}/pact-cli
VERSION: ${{ github.event.inputs.version }}
INCREMENT: ${{ github.event.client_payload.increment }}${{ github.event.inputs.increment }}
CUSTOM_TAG: ${{ github.event.client_payload.tag }}${{ github.event.inputs.tag }}
# populate INCREMENT from workflow_dispatch or repository_dispatch
PUSH_TO_LATEST: ${{ github.event.inputs.push_to_latest }}
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Test

on: [push, pull_request]
on: [push, pull_request, workflow_dispatch]

jobs:
test:
Expand Down
66 changes: 0 additions & 66 deletions .github/workflows/update_gems.yml

This file was deleted.

31 changes: 30 additions & 1 deletion RELEASING.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,34 @@
# Releasing

Manual releases are not generally necessary. When one of the Pact gems is released, it sends a repository dispatch notification with event type `gem-released`, which triggers the `Update gems` Github Action that updates the gems and commits the changes. The `Release` workflow is then triggered by another repository dispatch action of type `release-triggered` which generates the release notes, builds and publishes the Docker image, and creates the git commits and tags.
> Manual releases are not generally necessary.
When one of the Pact gems is released, it sends a repository dispatch notification with event type `gem-released`, which triggers the `Update gems` Github Action that updates the gems and commits the changes. The `Release` workflow is then triggered by another repository dispatch action of type `release-triggered` which generates the release notes, builds and publishes the Docker image, and creates the git commits and tags.

If the packaging code needs to be updated, a manual release can be performed by running the `Release Docker image with updated packaging` workflow from the UI.

## Automatic releases of the Docker image triggered by the release of one of the Pact gem

When one of the Pact gems is released by the Github Action in its repository, the `repository_dispatch` action of the `pact-ruby-cli` repository will be invoked with the type `gem-released`, and the release details (name, version, increment).

This causes the `update_gems.yml` workflow to be run. At the end of the workflow, it will trigger a release by invoking the `repository_dispatch` action with type `release-triggered`, passing in the increment.

Note: sometimes bundler cannot find the newly released gem straight away, and the job needs to be re-run via the UI.

### Manual releases of the Docker image triggered by the release of one of the Pact gem

* On the Github Actions page, select `Update gems`
* Select `Run workflow`
* To attempt to update a particular gem - update the default `released_gem_name` & set the required `released_gem_version` and then click `Run workflow`. This should be the normal process if a Pact gem has been updated.
* To release a non-minor version change, select the `released_gem_version_increment` you want along with the above values, and click `Run workflow`.
* If the `Gemfile.lock` is updated, the results will be committed back to the repository, along with an updated `lib/pact/cli/version.rb` set to the `released_gem_version_increment` (which defaults to minor)
* This will trigger an automated release of the Docker image, where the Docker semver tag will be updated by a the same `released_gem_version_increment`


## Manually releasing the Docker image

* On the Github Actions page, select `Release Docker image`
* Select `Run workflow`
* To release a minor version change, do not set any inputs - just click `Run workflow`. This should be the normal process if you've done some changes to the Docker image.
* To release a non-minor version change, select the increment you want, and click `Run workflow`.
* To set a custom version number (not sure of the usecase for this, but just in case...), set both the version AND the increment and click `Run workflow`.
* To do a completely custom tag, just set the "Custom Docker image tag" and click `Run workflow`. If you do this, the VERSION file will NOT be updated. It is for testing purposes only.
30 changes: 13 additions & 17 deletions script/release-workflow/docker-push.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,18 @@

set -euo >/dev/null

# Enable when we bump the major version to 1 (which we should)
# if [ -n "${MAJOR_TAG}" ]; then
# docker tag ${DOCKER_IMAGE_ORG_AND_NAME}:latest ${DOCKER_IMAGE_ORG_AND_NAME}:${MAJOR_TAG}
# docker push ${DOCKER_IMAGE_ORG_AND_NAME}:${MAJOR_TAG}
# docker push ${DOCKER_IMAGE_ORG_AND_NAME}:latest
# fi
push() {
docker buildx build --platform=linux/amd64,linux/arm64,linux/arm \
--output=type=image,push=true \
-t ${DOCKER_IMAGE_ORG_AND_NAME}:$1 .
}

if [ -n "${MAJOR_TAG:-}" ]; then
push ${MAJOR_TAG}
fi

docker buildx build --platform=linux/amd64 \
--output=type=image,push=true \
-t ${DOCKER_IMAGE_ORG_AND_NAME}:latest \
-t ${DOCKER_IMAGE_ORG_AND_NAME}:${TAG} .
## We will temporarily publish a multi manifest built as $TAG-multi
## To avoid any issues with existing users. We can ask users for
## Feedback and then promote to a multi-manifest build
docker buildx build --platform=linux/amd64,linux/arm64,linux/arm \
--output=type=image,push=true \
-t ${DOCKER_IMAGE_ORG_AND_NAME}:latest-multi \
-t ${DOCKER_IMAGE_ORG_AND_NAME}:${TAG}-multi .
push ${TAG}

if [ "${PUSH_TO_LATEST}" != "false" ]; then
push latest
fi

0 comments on commit fe101db

Please sign in to comment.