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(build): update Makefile and CI to adjust release mode #1627

Merged
merged 10 commits into from
Dec 29, 2023
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
41 changes: 22 additions & 19 deletions .github/workflows/manual-create-pd-pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@ on:
workflow_dispatch:
inputs:
release_version:
description: "Release version, e.g. v2021.07.09.1"
description: "Release version, e.g. v7.6.0-f7bbcdcf"
required: true
pd_branchs:
description: 'PD branch, e.g. ["master", "release-7.6"]'
default: '["master"]'
required: true

jobs:
Expand All @@ -13,7 +17,8 @@ jobs:
strategy:
fail-fast: false
matrix:
branch: [master, release-5.4, release-6.1]
# https://stackoverflow.com/questions/69781005/combine-dynamic-github-workflow-matrix-with-input-values-and-predefined-values
branch: ${{ fromJson(github.event.inputs.pd_branchs) }}
name: Create PD PR - ${{ matrix.branch }}
steps:
- name: Check out PD code base
Expand All @@ -23,7 +28,7 @@ jobs:
ref: ${{ matrix.branch }}
- uses: actions/setup-go@v3
with:
go-version: "1.18"
go-version: "1.21"
- name: Load go module cache
uses: actions/cache@v3
with:
Expand All @@ -35,23 +40,17 @@ jobs:
${{ runner.os }}-go-pd-
- name: Update TiDB Dashboard in PD code base
run: |
go get -d "github.com/pingcap/tidb-dashboard@${{ github.event.inputs.release_version }}"
go mod tidy
make pd-server
go mod tidy
cd tests/client
go mod tidy
cd ../..
scripts/update-dashboard.sh ${{ github.event.inputs.release_version }}
- name: Commit PD code base change
id: git_commit
run: |
git diff
git config user.name "tidb-dashboard-bot"
git config user.email "tidb-dashboard-bot@pingcap.com"
git config user.name "baurine"
git config user.email "2008.hbl@gmail.com"
git add .
if git status | grep -q "Changes to be committed"
then
git commit --signoff --message "Update TiDB Dashboard to ${{ github.event.inputs.release_version }}, ref #4257"
git commit --signoff --message "chore(dashboard): update TiDB Dashboard to ${{ github.event.inputs.release_version }}"
echo "::set-output name=committed::1"
else
echo "No changes detected, skipped"
Expand All @@ -60,24 +59,28 @@ jobs:
id: build_id
run: echo "::set-output name=id::$(date +%s)"
- name: Create PR based on PD code base
id: cpr
uses: peter-evans/create-pull-request@v3
if: steps.git_commit.outputs.committed == 1
with:
token: ${{ secrets.BOT_PAT }}
push-to-fork: baurine/pd
token: ${{ secrets.PAT_TO_PUSH_PD_FORK }}
branch: update-tidb-dashboard/${{ matrix.branch }}-${{ github.event.inputs.release_version }}-${{ steps.build_id.outputs.id }}
title: Update TiDB Dashboard to ${{ github.event.inputs.release_version }} [${{ matrix.branch }}]
title: "chore(dashboard): update TiDB Dashboard to ${{ github.event.inputs.release_version }} [${{ matrix.branch }}]"
body: |
### What problem does this PR solve?

Issue Number: ref #4257

Update TiDB Dashboard to ${{ github.event.inputs.release_version }}.

Upstream commit: https://github.com/${{ github.repository }}/commit/${{ github.sha }} .
Update TiDB Dashboard to [${{ github.event.inputs.release_version }}](https://github.com/pingcap/tidb-dashboard/releases/tag/${{ github.event.inputs.release_version }}).

### Release note

```release-note
None
```
push-to-fork: tidb-dashboard-bot/pd
- name: Check outputs
if: steps.git_commit.outputs.committed == 1
run: |
echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
19 changes: 0 additions & 19 deletions .github/workflows/release-check.yaml

This file was deleted.

98 changes: 13 additions & 85 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,14 @@ name: Release

on:
push:
branches:
- release
tags:
- "v*"
- "!v*-alpha"

jobs:
release:
name: Release
runs-on: ubuntu-latest
outputs:
release_version: v${{ steps.lookup_release_version.outputs.release_version }}
steps:
- name: Checkout code
uses: actions/checkout@v3
Expand All @@ -37,10 +36,7 @@ jobs:
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Lookup release version
id: lookup_release_version
run: |
echo "::set-output name=release_version::$(grep -v '^#' ./release-version)"

- name: Build UI
env:
REACT_APP_MIXPANEL_TOKEN: ${{ secrets.REACT_APP_MIXPANEL_TOKEN }}
Expand All @@ -50,16 +46,23 @@ jobs:
working-directory: ui/packages/tidb-dashboard-for-op/dist
run: |
zip -r ../static-assets.zip .

# TODO: generate changelog
# - name: Generate Changelog
# id: build_changelog
# uses: mikepenz/[email protected]
- name: Create release
id: create_release
uses: fleskesvor/create-release@feature/support-target-commitish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ steps.lookup_release_version.outputs.release_version }}
release_name: Internal Version ${{ steps.lookup_release_version.outputs.release_version }}
tag_name: ${{ github.ref }}
release_name: Internal Version ${{ github.ref }}
draft: false
prerelease: false
# body: ${{steps.build_changelog.outputs.changelog}}

- name: Upload UI assets
uses: actions/[email protected]
env:
Expand All @@ -85,78 +88,3 @@ jobs:
asset_path: ./embedded-assets-golang.zip
asset_name: embedded-assets-golang.zip
asset_content_type: application/zip
pd_pr:
if: "!contains(github.event.head_commit.message, 'skip pd_pr')"
name: Create PD PR
runs-on: ubuntu-latest
needs: release
strategy:
fail-fast: false
matrix:
branch: [master, release-5.4, release-6.1]
steps:
- name: Check out PD code base
uses: actions/checkout@v3
with:
repository: tikv/pd
ref: ${{ matrix.branch }}
- uses: actions/setup-go@v3
with:
go-version: "1.18"
- name: Load go module cache
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-pd-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-pd-
- name: Update TiDB Dashboard in PD code base
run: |
go get -d "github.com/pingcap/tidb-dashboard@${{ needs.release.outputs.release_version }}"
go mod tidy
make pd-server
go mod tidy
cd tests/client
go mod tidy
cd ../..
- name: Commit PD code base change
id: git_commit
run: |
git diff
git config user.name "tidb-dashboard-bot"
git config user.email "[email protected]"
git add .
if git status | grep -q "Changes to be committed"
then
git commit --signoff --message "Update TiDB Dashboard to ${{ needs.release.outputs.release_version }}, ref #4257"
echo "::set-output name=committed::1"
else
echo "No changes detected, skipped"
fi
- name: Set build ID
id: build_id
run: echo "::set-output name=id::$(date +%s)"
- name: Create PR based on PD code base
uses: peter-evans/create-pull-request@v3
if: steps.git_commit.outputs.committed == 1
with:
token: ${{ secrets.BOT_PAT }}
branch: update-tidb-dashboard/${{ matrix.branch }}-${{ needs.release.outputs.release_version }}-${{ steps.build_id.outputs.id }}
title: Update TiDB Dashboard to ${{ needs.release.outputs.release_version }} [${{ matrix.branch }}]
body: |
### What problem does this PR solve?

Issue Number: ref #4257

This is an automatic updating PR for TiDB Dashboard. See #4257 for details.

This PR updates TiDB Dashboard to ${{ needs.release.outputs.release_version }} for upstream commit: https://github.com/${{ github.repository }}/commit/${{ github.sha }} .

### Release note

```release-note
None
```
push-to-fork: tidb-dashboard-bot/pd
2 changes: 1 addition & 1 deletion .github/workflows/test-docker-image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
uses: docker/setup-buildx-action@v2
- name: Read VERSION file
id: getversion
run: echo "::set-output name=version::$(grep -v '^\#' ./release-version)"
run: echo "::set-output name=version::$(git describe --tags --dirty --always)"
- name: Build
uses: docker/build-push-action@v3
with:
Expand Down
10 changes: 10 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,16 @@ If you want to develop docker image locally 🤔.

> The old Dashboard **_in PD_** can be accessed at [http://localhost:2379/dashboard](http://localhost:2379/dashboard).

### How to update TiDB Dashboard in PD

To update the TiDB Dashboard in PD, we need to release a TiDB Dashboard version and submit a PR to PD.

1. In a release branch, likes `release-7.6`, run `make tag` to add a new tag for TiDB Dashboard. The new tag is like `v7.6.x-<sha>`.

1. Push the new tag to the remote repository, it will trigger the CI to release a new TiDB Dashboard version.

1. After the new version is created, go to https://github.com/pingcap/tidb-dashboard/actions/workflows/manual-create-pd-pr.yaml, click `Run workflow` button, fill the required parameters and submit the workflow, it will trigger the CI to create a PR to PD which will update the TiDB Dashboard version in PD.

## Contribution flow

This is a rough outline of what a contributor's workflow looks like:
Expand Down
7 changes: 5 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ E2E_SPEC ?=

UI ?=

RELEASE_VERSION := $(shell grep -v '^\#' ./release-version)
RELEASE_VERSION := $(shell git describe --tags --dirty --always)

LDFLAGS += -X "$(DASHBOARD_PKG)/pkg/utils/version.InternalVersion=$(RELEASE_VERSION)"
LDFLAGS += -X "$(DASHBOARD_PKG)/pkg/utils/version.Standalone=Yes"
Expand All @@ -37,7 +37,6 @@ NO_CACHE ?=
BUILD_GOEXPERIMENT ?=
BUILD_CGO_ENABLED ?=
ifeq ("${ENABLE_FIPS}", "1")
RELEASE_VERSION := $(RELEASE_VERSION)-fips
BUILD_TAGS += boringcrypto
BUILD_GOEXPERIMENT = GOEXPERIMENT=boringcrypto
BUILD_CGO_ENABLED = CGO_ENABLED=1
Expand Down Expand Up @@ -158,6 +157,10 @@ docker-build-image-locally-arm64: clean
docker buildx build ${NO_CACHE} --load -t $(IMAGE) --platform $(ARM64) -f $(DOCKERFILE) .
docker run --rm $(IMAGE) -v

.PHONY: tag
tag:
node scripts/create_release_tag.js

.PHONY: run # please ensure that tiup playground is running in the background.
run:
bin/tidb-dashboard --debug --experimental --feature-version "$(FEATURE_VERSION)" --host 0.0.0.0
57 changes: 57 additions & 0 deletions scripts/create_release_tag.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
// This scripts is used to create a new release tag for the current release branch
// when we need to submit a PR to PD for updating the tidb-dashboard.
// After this tag is pushed, it will trigger the CI to build a new tidb-dashboard release version.
// Then we can run the manual-create-pd-pr.yaml workflow in the GitHub to create a PR to PD.

const { execSync } = require('child_process');

function getGitBranch() {
// master, release-7.6
return execSync('git rev-parse --abbrev-ref HEAD').toString().trim();
}

function getGitShortSha() {
// eb69e4fd
return execSync('git rev-parse --short HEAD').toString().trim();
}

function getGitLatestTag() {
// v7.6.0-alpha, v7.6.0-<sha>, v7.6.0, v7.6.1-<sha>, v7.6.1
return execSync('git describe --tags --dirty --always').toString().trim();
}

function createReleaseTag() {
const branch = getGitBranch();

if (!branch.match(/release-\d.\d$/)) {
console.error('Err: this is not a valid release branch');
return
}

const branchVer = branch.replace('release-', '');
const latestTag = getGitLatestTag().replace('-fips', '');

if (!latestTag.startsWith(`v${branchVer}.`)) {
console.error(`Err: latest tag ${latestTag} doesn't match the branch ${branch}, you need to add the new tag manually`);
return
baurine marked this conversation as resolved.
Show resolved Hide resolved
}

const shortSha = getGitShortSha();
const splitPos = latestTag.indexOf('-');
let nextTag = ''
if (splitPos === -1) {
// the latest tag likes v7.6.0, v7.6.1
// then the next tag should be v7.6.1-<sha> for v7.6.0, v7.6.2-<sha> for v7.6.1
const suffix = latestTag.replace(`v${branchVer}.`, '');
nextTag = `v${branchVer}.${parseInt(suffix) + 1}-${shortSha}`;
} else {
// the latest tag likes v7.6.0-<sha>, v7.6.1-<sha>
// then the next tag should be v7.6.0-<sha> for v7.6.0-<sha>, v7.6.1-<sha> for v7.6.1-<sha>
const prefix = latestTag.substring(0, splitPos);
nextTag = `${prefix}-${shortSha}`;
}
execSync(`git tag ${nextTag}`);
console.log(`Created tag ${nextTag}`)
}

createReleaseTag()
2 changes: 0 additions & 2 deletions ui/.env.development
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
PORT=3001
PUBLIC_URL='/dashboard'
REACT_APP_VERSION=$npm_package_version
# REACT_APP_RELEASE_VERSION is set in config-overrides.js
REACT_APP_RELEASE_VERSION=unknown
REACT_APP_MIXPANEL_HOST=https://telemetry.pingcap.com/api/v1/dashboard/report
REACT_APP_MIXPANEL_TOKEN=
Loading
Loading