Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: workflows call workflows #7089

Merged
merged 3 commits into from
May 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 11 additions & 12 deletions .github/workflows/docker_publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,13 @@ on:
- main
paths-ignore:
- website/**
tags:
- 'v*'
workflow_dispatch:
workflow_call:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

inputs:
ignore-push:
description: 'Ignore push to dockerhub. If not set the image will be pushed with the sha of the commit as tag'
required: false
type: boolean
Comment on lines -13 to -16
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed the ability of ignoring pushes. We never use it, it was mainly for testing this workflow during development

version:
description: "Which version to release"
type: 'string'
required: true
workflow_dispatch:

jobs:
build:
Expand All @@ -35,10 +34,10 @@ jobs:
images: |
unleashorg/unleash-server
tags: |
# only enabled for v* tags:
type=semver,pattern={{ version }},enable=${{ startsWith(github.ref, 'refs/tags/v') }}
type=semver,pattern={{ major.minor }},enable=${{ startsWith(github.ref, 'refs/tags/v') }}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pattern={{ major.minor }} was wrong, it should be pattern={{ major }}.{{ minor }}

type=semver,pattern={{ major }},enable=${{ startsWith(github.ref, 'refs/tags/v') }}
# only enabled for workflow dispatch except main (assume its a release):
type=semver,pattern={{ version }},enable=${{ github.event_name == 'workflow_dispatch' && github.ref != 'refs/heads/main' }},value=${{ inputs.version }}
type=semver,pattern={{ major }}.{{ minor }},enable=${{ github.event_name == 'workflow_dispatch' && github.ref != 'refs/heads/main' }},value=${{ inputs.version }}
type=semver,pattern={{ major }},enable=${{ github.event_name == 'workflow_dispatch' && github.ref != 'refs/heads/main' }},value=${{ inputs.version }}
Comment on lines +37 to +40
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now we explicitly send the value as in https://github.com/ivarconr/unleash-enterprise/pull/1316 (because we're not using the tag to trigger)

# only enabled in main:
type=edge,prefix=main-,suffix=-${{ matrix.version }},enable=${{ github.ref == 'refs/heads/main' }}
# only enabled on workflow_dispatch:
Expand All @@ -57,7 +56,7 @@ jobs:
with:
context: .
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.ignore-push != 'true' }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: NODE_VERSION=${{ matrix.version }}
6 changes: 0 additions & 6 deletions .github/workflows/notify_enterprise.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,6 @@ on:
paths-ignore:
- website/**
- coverage/**
# not sure if we will have all the payload as the push to main has.
# workflow_run:
# workflows: [ 'Publish to npm' ]
# types: [ completed ]
# branches:
# - 'main'

jobs:
build:
Expand Down
44 changes: 28 additions & 16 deletions .github/workflows/publish-new-version.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,18 @@ jobs:
echo PREV=$(git describe --tags ${PREV_COMMIT}) >> $GITHUB_ENV
- if: ${{ !endsWith(github.event.inputs.version, '0') }}
run: echo PREV=$(git describe --abbrev=0) >> $GITHUB_ENV
- name: Generate changelog if not pre-release
- name: Generate changelog from ${{ env.PREV }}
continue-on-error: true
if: ${{ !contains(github.event.inputs.version, '-') }}
env:
PREV: ${{ env.PREV }}
run: |
git-cliff ${PREV}..HEAD --tag v${{ github.event.inputs.version }} --prepend CHANGELOG.md
git-cliff ${{ env.PREV }}..HEAD --tag v${{ github.event.inputs.version }} --prepend CHANGELOG.md
if [ -n "$(git status --porcelain)" ]; then
git commit -am "docs: Update CHANGELOG.md"
else
echo "No changes to CHANGELOG.md"
fi
- run: yarn install --frozen-lockfile --ignore-scripts
- name: npm version
run: |
Expand Down Expand Up @@ -106,19 +110,27 @@ jobs:
git commit -m "chore: bump version to ${{ github.event.inputs.version }}+main"
git push origin main

update-version-checker:
publish-docker:
needs: build
uses: ./.github/workflows/docker_publish.yaml
with:
version: ${{ github.event.inputs.version }}

publish-npm:
needs: build
uses: ./.github/workflows/release.yaml
with:
version: ${{ github.event.inputs.version }}

release-changelog: # TODO this changelog is different than the git-cliff one above
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: I'd like to tackle this later but I want to highlight this for the reviewer

needs: build
uses: ./.github/workflows/release_changelog.yml
with:
version: ${{ github.event.inputs.version }}

update-version-checker:
needs: publish-docker
if: ${{ github.event.inputs.update-version-function == 'true' }}
runs-on: ubuntu-latest
steps:
- name: Authenticate Google IAM
uses: 'google-github-actions/auth@v2'
with:
workload_identity_provider: 'projects/340004706233/locations/global/workloadIdentityPools/gh-actions-pool/providers/github-actions-oidc-unleash'
service_account: 'versionUpdateSa@metrics-304612.iam.gserviceaccount.com'
token_format: 'access_token'
- name: Update version checker
uses: 'Unleash/update-version-action@v0'
with:
version: ${{ github.event.inputs.version }}
distribution: 'oss'
uses: ./.github/workflows/update_version_for_version_checker.yml
with:
version: ${{ github.event.inputs.version }}
14 changes: 7 additions & 7 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
name: 'Publish to npm'
on:
push:
tags:
- 'v*'
workflow_call:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Publishing to npm based on a workflow call. If we want to still publish on tag we can add workflow_dispatch to call this manually

inputs:
version:
description: "Which version number should we use for the release"
type: 'string'
required: true

jobs:
build:
Expand Down Expand Up @@ -35,9 +38,6 @@ jobs:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
- name: Get the version
id: get_version
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
Comment on lines -38 to -40
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can't get the version from the tag, but we can receive it as an input parameter

- name: Publish static assets to S3
run: |
aws s3 cp frontend/build s3://getunleash-static/unleash/${{ steps.get_version.outputs.VERSION }} --recursive
aws s3 cp frontend/build s3://getunleash-static/unleash/v${{ inputs.version }} --recursive
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make sure to prepend v as that's what we used to get from the tag, but the version number is just the semver without the leading v.

Compared in this test https://github.com/gastonfournier/unleash/actions/runs/9161953548/job/25187925675#step:8:8 against an actual release from unleash: https://github.com/Unleash/unleash/actions/runs/9110390951/job/25045331871#step:8:1

21 changes: 12 additions & 9 deletions .github/workflows/release_changelog.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
name: 'Releases'
name: 'Release changelog'
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a rename. Keeping this workflow relying on tags because it uses a deprecated action and relies on tag refs. We should migrate this: https://github.com/Unleash/unleash/actions/runs/9125610662/job/25092161594#step:4:3

on:
push:
tags:
- 'v*'
workflow_call:
inputs:
version:
description: "Which version number should we use for the release"
type: 'string'
required: true

jobs:
release:
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- name: Checkout code
Expand All @@ -16,12 +18,13 @@ jobs:
uses: metcalfc/changelog-generator@v4.3.1
with:
myToken: ${{ secrets.GITHUB_TOKEN }}
base-ref: v${{ inputs.version }}
- name: Create release
uses: actions/create-release@v1
uses: softprops/action-gh-release@v2
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Upgrading to the same action we're using in enterprise as the one at the left is archived

with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
tag_name: v${{ inputs.version }}
name: v${{ inputs.version }}
body: ${{ steps.github_release.outputs.changelog }}
prerelease: ${{ contains(github.ref, 'beta') || contains(github.ref, 'alpha') }}
prerelease: ${{ contains(inputs.version, 'beta') || contains(inputs.version, 'alpha') }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN}}
6 changes: 6 additions & 0 deletions .github/workflows/update_version_for_version_checker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ permissions:
contents: read

on:
workflow_call:
inputs:
version:
description: "Which version should we set OSS to"
type: 'string'
required: true
workflow_dispatch:
inputs:
version:
Expand Down