diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 69e88d3474cb..c641b7082167 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -17,9 +17,6 @@ jobs: runs-on: ubuntu-latest name: build - strategy: - matrix: - node-version: [18.x] services: # Label used to access the service container postgres: @@ -38,10 +35,10 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Use Node.js ${{ matrix.node-version }} + - name: Use Node.js 18.x uses: actions/setup-node@v4 with: - node-version: ${{ matrix.node-version }} + node-version: 18.x cache: 'yarn' - run: yarn install --frozen-lockfile --ignore-scripts - run: yarn lint @@ -56,4 +53,4 @@ jobs: if: (success() || failure()) && github.ref == 'refs/heads/main' with: name: test-results - path: ./reports/jest-junit.xml \ No newline at end of file + path: ./reports/jest-junit.xml diff --git a/.github/workflows/build_frontend_prs.yml b/.github/workflows/build_frontend_prs.yml index 7f7b2dbe1812..48465e6b01b6 100644 --- a/.github/workflows/build_frontend_prs.yml +++ b/.github/workflows/build_frontend_prs.yml @@ -8,18 +8,17 @@ on: jobs: build: runs-on: ubuntu-latest + name: build defaults: run: working-directory: frontend - strategy: - matrix: - node-version: [18.x] + steps: - uses: actions/checkout@v4 - - name: Use Node.js ${{ matrix.node-version }} + - name: Use Node.js 18.x uses: actions/setup-node@v4 with: - node-version: ${{ matrix.node-version }} + node-version: 18.x - run: yarn run lint:material:icons - run: yarn --frozen-lockfile - run: yarn run lint:check diff --git a/.github/workflows/build_prs_jest_report.yaml b/.github/workflows/build_prs_jest_report.yaml index e2378b2b0ef6..589687dcfd71 100644 --- a/.github/workflows/build_prs_jest_report.yaml +++ b/.github/workflows/build_prs_jest_report.yaml @@ -12,7 +12,7 @@ on: jobs: build: runs-on: ubuntu-latest - name: build (18.x) # temporary solution to trick branch protection rules + name: build # temporary solution to trick branch protection rules services: # Label used to access the service container diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml new file mode 100644 index 000000000000..4137b758a8b4 --- /dev/null +++ b/.github/workflows/dependency-review.yml @@ -0,0 +1,21 @@ +name: Dependency review + +on: + pull_request: + +permissions: + contents: read + pull-requests: write + +jobs: + license_review: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Dependency review + uses: actions/dependency-review-action@v4 + with: + fail-on-severity: moderate + allow-licenses: Apache-2.0, MIT, BSD-2-Clause, BSD-3-Clause, ISC, CC0-1.0, Unlicense + comment-summary-in-pr: always diff --git a/.github/workflows/docker_publish.yaml b/.github/workflows/docker_publish.yaml index 9fba8ef229cb..2b0e915fc44e 100644 --- a/.github/workflows/docker_publish.yaml +++ b/.github/workflows/docker_publish.yaml @@ -6,14 +6,13 @@ on: - main paths-ignore: - website/** - tags: - - 'v*' - workflow_dispatch: + workflow_call: 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 + version: + description: "Which version to release" + type: 'string' + required: true + workflow_dispatch: jobs: build: @@ -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') }} - 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 }} # only enabled in main: type=edge,prefix=main-,suffix=-${{ matrix.version }},enable=${{ github.ref == 'refs/heads/main' }} # only enabled on workflow_dispatch: @@ -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 }} diff --git a/.github/workflows/notify_enterprise.yaml b/.github/workflows/notify_enterprise.yaml index 3c388f706417..a75dabd9adaf 100644 --- a/.github/workflows/notify_enterprise.yaml +++ b/.github/workflows/notify_enterprise.yaml @@ -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: diff --git a/.github/workflows/publish-new-version.yaml b/.github/workflows/publish-new-version.yaml index 8eb63f82a780..16c3564927e5 100644 --- a/.github/workflows/publish-new-version.yaml +++ b/.github/workflows/publish-new-version.yaml @@ -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: | @@ -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 + 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 }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 70dea9efa0ec..ecaa0963a9b7 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,8 +1,11 @@ name: 'Publish to npm' on: - push: - tags: - - 'v*' + workflow_call: + inputs: + version: + description: "Which version number should we use for the release" + type: 'string' + required: true jobs: build: @@ -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\//} - 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 diff --git a/.github/workflows/release_changelog.yml b/.github/workflows/release_changelog.yml index 5a6c21a9e117..ac4f6a29360b 100644 --- a/.github/workflows/release_changelog.yml +++ b/.github/workflows/release_changelog.yml @@ -1,12 +1,14 @@ -name: 'Releases' +name: 'Release changelog' 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 @@ -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 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}} diff --git a/.github/workflows/update_version_for_version_checker.yml b/.github/workflows/update_version_for_version_checker.yml index c512418da8d3..bce8842ba451 100644 --- a/.github/workflows/update_version_for_version_checker.yml +++ b/.github/workflows/update_version_for_version_checker.yml @@ -5,8 +5,12 @@ permissions: contents: read on: - release: - types: [published] + workflow_call: + inputs: + version: + description: "Which version should we set OSS to" + type: 'string' + required: true workflow_dispatch: inputs: version: diff --git a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/useShowDependentFeatures.ts b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/useShowDependentFeatures.ts index 4f0cb7757d0e..150a3aa38bee 100644 --- a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/useShowDependentFeatures.ts +++ b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/useShowDependentFeatures.ts @@ -5,5 +5,5 @@ export const useShowDependentFeatures = (project: string) => { const { dependenciesExist } = useCheckDependenciesExist(project); const { isOss } = useUiConfig(); - return Boolean(isOss() ? dependenciesExist : true); + return Boolean(project) && Boolean(isOss() ? dependenciesExist : true); };