mirror of
https://github.com/Unleash/unleash.git
synced 2024-12-22 19:07:54 +01:00
07354f7218
Relying on tags to trigger workflows makes it hard to trace what's happening after a release, currently: 1. We manually trigger a release workflow 2. The release workflow executes and tags the new release in code 3. Several other workflows trigger after matching the tag doing different things: build docker images, tarballs and other things. This creates a loose dependency between the workflows which are actually part of the same "release workflow" which makes it difficult to spot when one or other dependent workflow fails because the dependency is indirect through the tagging mechanism. This PR switches to a more direct approach using [workflow calls](https://docs.github.com/en/actions/using-workflows/reusing-workflows). This will create a graph as shown in the following graph: ![](https://docs.github.com/assets/cb-34427/mw-1440/images/help/actions/reusable-workflows-ci-cd.webp) making it easier to track and identify any problem. The "drawback" of this approach is that previously we could trigger all dependent workflows at once by creating a tag matching the expected pattern without manually triggering a new release. This limitation can be overcome by adding a manual workflow_dispatch to the workflows using the tag trigger.
61 lines
2.0 KiB
YAML
61 lines
2.0 KiB
YAML
name: 'Notify enterprise of commit in main'
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths-ignore:
|
|
- website/**
|
|
- coverage/**
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
node-version: [20.x]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Trigger sync
|
|
uses: actions/github-script@v7
|
|
env:
|
|
COMMIT_ACTOR: ${{ github.event.commits[0].author.name }} <${{ github.event.commits[0].author.email }}>
|
|
with:
|
|
github-token: ${{ secrets.UNLEASH_CI_BUILDER_GITHUB_TOKEN }}
|
|
script: |
|
|
await github.rest.actions.createWorkflowDispatch({
|
|
owner: 'ivarconr',
|
|
repo: 'unleash-enterprise',
|
|
workflow_id: 'cicd.yaml',
|
|
ref: 'master',
|
|
inputs: {
|
|
commit: "${{ github.event.head_commit.id }}",
|
|
actor: ${{ toJSON(env.COMMIT_ACTOR) }},
|
|
message: ${{ toJSON(github.event.head_commit.message) }},
|
|
}
|
|
})
|
|
|
|
# build static assets after triggering the sync workflow.
|
|
# Adding a validation step in the sync workflow will ensure that the static assets are built before deployment.
|
|
- name: Build static assets
|
|
run: |
|
|
cd frontend
|
|
yarn install --frozen-lockfile
|
|
yarn build
|
|
- uses: aws-actions/configure-aws-credentials@v2
|
|
with:
|
|
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 commit hash
|
|
id: get_commit_hash
|
|
run: |
|
|
COMMIT_HASH=${{ github.sha }}
|
|
echo "Commit hash: $COMMIT_HASH"
|
|
echo "::set-output name=COMMIT_HASH::$COMMIT_HASH"
|
|
- name: Publish static assets to S3
|
|
run: |
|
|
aws s3 cp frontend/build s3://getunleash-static/unleash/commits/${{ steps.get_commit_hash.outputs.COMMIT_HASH }} --recursive
|