Skip to content

Commit

Permalink
chore(build): update Makefile and CI to adjust release mode (#1627)
Browse files Browse the repository at this point in the history
* chore(build): update Makefile and CI

* chore(build): add script to auto create release tag

* refine

* chore: add doc

* remove -fips suffix

* refine

* update push token

* generate changelog when release

* refine

---------

Co-authored-by: ti-chi-bot[bot] <108142056+ti-chi-bot[bot]@users.noreply.github.com>
  • Loading branch information
baurine and ti-chi-bot[bot] authored Dec 29, 2023
1 parent 17f4b02 commit 270f21d
Show file tree
Hide file tree
Showing 9 changed files with 108 additions and 146 deletions.
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
}

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

0 comments on commit 270f21d

Please sign in to comment.