diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 89dde3309..b1cbf8246 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,6 +1,6 @@ [bumpversion] commit = True -tag = False +tag = True current_version = 2.2.0 [bumpversion:file:package.json] diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 000000000..506274025 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,158 @@ +name: Release + +on: + push: + tags: + - '*.*.*' # Run workflow on version tags, e.g. v1.0.0. + +jobs: + release: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Setup packages + id: setup-packages + run: | + apt-get update -y + apt-get install -y zip zstd jq git + + - name: Setup Node.js environment + uses: actions/setup-node@v2.1.2 + with: + node-version: '12.x' + + - name: Setup Go environment + uses: actions/setup-go@v2 + with: + go-version: '1.15' + + - name: Cache node_modules + id: cache-node-modules + uses: actions/cache@v2 + with: + path: node_modules + key: ${{ runner.os }}-${{ matrix.node-version }}-nodemodules-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-${{ matrix.node-version }}-nodemodules- + + - name: Cache golang + id: cache-golang + uses: actions/cache@v2 + with: + path: /go/pkg/mod + key: ${{ runner.os }}-${{ matrix.golang-version }}-golang-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-${{ matrix.golang-version }}-golang- + + - name: Install nodejs dependencies + run: npm install --production=false + if: | + steps.cache-node-modules.outputs.cache-hit != 'true' + + - name: Install golang dependencies + run: go mod download -x + if: | + steps.cache-golang.outputs.cache-hit != 'true' + + - name: Build frontend + run: npm run build:prod + + - name: Test frontend + run: npm run test + + - name: Build backend + run: | + GOOS=linux GOARCH=amd64 go build -o ./dist/vertamedia-clickhouse-plugin_linux_amd64 . && \ + GOOS=linux GOARCH=arm64 go build -o ./dist/vertamedia-clickhouse-plugin_linux_arm64 . && \ + GOOS=windows GOARCH=amd64 go build -o ./dist/vertamedia-clickhouse-plugin_windows_amd64.exe . && \ + GOOS=darwin GOARCH=amd64 go build -o ./dist/vertamedia-clickhouse-plugin_darwin_amd64 . && \ + # GOOS=darwin GOARCH=arm64 go build -o ./dist/vertamedia-clickhouse-plugin_darwin_arm64 . && \ + chmod +x ./dist/vertamedia-clickhouse-plugin* + + - name: Sign plugin + env: + GRAFANA_API_KEY: ${{ secrets.GRAFANA_API_KEY }} # Requires a Grafana API key from Grafana.com. + run: node ./node_modules/@grafana/toolkit/bin/grafana-toolkit.js plugin:sign + + - name: Get plugin metadata + id: metadata + run: | + export GRAFANA_PLUGIN_ID=$(cat dist/plugin.json | jq -r .id) + export GRAFANA_PLUGIN_VERSION=$(cat dist/plugin.json | jq -r .info.version) + export GRAFANA_PLUGIN_TYPE=$(cat dist/plugin.json | jq -r .type) + export GRAFANA_PLUGIN_ARTIFACT=${GRAFANA_PLUGIN_ID}-${GRAFANA_PLUGIN_VERSION}.zip + export GRAFANA_PLUGIN_ARTIFACT_CHECKSUM=${GRAFANA_PLUGIN_ARTIFACT}.md5 + + echo "::set-output name=plugin-id::${GRAFANA_PLUGIN_ID}" + echo "::set-output name=plugin-version::${GRAFANA_PLUGIN_VERSION}" + echo "::set-output name=plugin-type::${GRAFANA_PLUGIN_TYPE}" + echo "::set-output name=archive::${GRAFANA_PLUGIN_ARTIFACT}" + echo "::set-output name=archive-checksum::${GRAFANA_PLUGIN_ARTIFACT_CHECKSUM}" + + echo ::set-output name=github-tag::${GITHUB_REF#refs/*/} + + - name: Read changelog + id: changelog + run: | + awk '/^# / {s++} s == 1 {print}' CHANGELOG.md > /tmp/release_notes.md + echo "::set-output name=path::/tmp/release_notes.md" + + - name: Package plugin + id: package-plugin + run: | + mkdir -p /tmp/${{ steps.metadata.outputs.plugin-id }} + cp -rfv dist/* /tmp/${{ steps.metadata.outputs.plugin-id }}/ + pushd /tmp/ + zip ${{ steps.metadata.outputs.archive }} ${{ steps.metadata.outputs.plugin-id }} -r + md5sum ${{ steps.metadata.outputs.archive }} > /tmp/${{ steps.metadata.outputs.archive-checksum }} + echo "::set-output name=checksum::$(cat /tmp/${{ steps.metadata.outputs.archive-checksum }} | cut -d' ' -f1)" + popd + + - name: Lint plugin + run: | + git clone https://github.com/grafana/plugin-validator /tmp/plugin-validator + pushd /tmp/plugin-validator/cmd/plugincheck + go install + popd + plugincheck /tmp/${{ steps.metadata.outputs.archive }} -strict + + - name: Create release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ github.ref }} + body_path: ${{ steps.changelog.outputs.path }} + draft: true + + - name: Add plugin to release + id: upload-plugin-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: /tmp/${{ steps.metadata.outputs.archive }} + asset_name: ${{ steps.metadata.outputs.archive }} + asset_content_type: application/zip + + - name: Add checksum to release + id: upload-checksum-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: /tmp/${{ steps.metadata.outputs.archive-checksum }} + asset_name: ${{ steps.metadata.outputs.archive-checksum }} + asset_content_type: text/plain + + - name: Publish to Grafana.com + run: | + echo Publish your plugin to grafana.com/plugins by opening a PR to https://github.com/grafana/grafana-plugin-repository with the following entry: + echo + echo '{ "id": "${{ steps.metadata.outputs.plugin-id }}", "type": "${{ steps.metadata.outputs.plugin-type }}", "url": "https://github.com/${{ github.repository }}", "versions": [ { "version": "${{ steps.metadata.outputs.plugin-version }}", "commit": "${{ github.sha }}", "url": "https://github.com/${{ github.repository }}", "download": { "any": { "url": "${{ steps.upload-plugin-asset.outputs.browser_download_url }}", "md5": "${{ steps.package-plugin.outputs.checksum }}" } } } ] }' | jq . diff --git a/.gitignore b/.gitignore index a8fb7c634..becd4bbdb 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ yarn.lock package-lock.json .cache .release_env +.env ubuntu*.log diff --git a/Vagrantfile b/Vagrantfile index 67fa2e2a6..ee5815b61 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -8,9 +8,9 @@ end Vagrant.configure(2) do |config| - config.vm.box = "ubuntu/bionic64" + config.vm.box = "ubuntu/focal64" config.vm.box_check_update = false - config.vm.synced_folder ".", "/vagrant", type: "nfs" + # config.vm.synced_folder ".", "/vagrant", type: "nfs" if Vagrant.has_plugin?("vagrant-vbguest") config.vbguest.auto_update = false @@ -43,6 +43,18 @@ Vagrant.configure(2) do |config| apt-get install --no-install-recommends -y apt-transport-https ca-certificates software-properties-common curl apt-get install --no-install-recommends -y htop ethtool mc curl wget jq socat git + # docker + apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8D81803C0EBFCD88 + add-apt-repository "deb https://download.docker.com/linux/ubuntu focal edge" + apt-get install --no-install-recommends -y docker-ce + + # docker compose + apt-get install -y --no-install-recommends python3-distutils + curl -sL https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py + python3 /tmp/get-pip.py + + pip3 install -U setuptools + pip3 install -U docker-compose # clickhouse apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E0C56BD4 @@ -68,5 +80,8 @@ Vagrant.configure(2) do |config| grafana-cli plugins update vertamedia-clickhouse-datasource systemctl start grafana-server grafana-cli plugins ls + + # github actions local + curl https://raw.githubusercontent.com/nektos/act/master/install.sh | bash SHELL end diff --git a/dist/MANIFEST.txt b/dist/MANIFEST.txt index d01c8130a..33f050d0e 100644 --- a/dist/MANIFEST.txt +++ b/dist/MANIFEST.txt @@ -9,34 +9,34 @@ Hash: SHA512 "signedByOrgName": "Vertamedia", "plugin": "vertamedia-clickhouse-datasource", "version": "2.2.0", - "time": 1607951813416, + "time": 1608089153471, "keyId": "7e4d0c6a708866e7", "files": { - "img\\annotations.png": "09cc19df992fede5c4dd830f7b3c7a783702feced07ea9693d417ec127077b00", - "img\\clickhouse_logo.svg": "111c2048c9bad4a11b0273cf17839696d98968c04cdcc5ea0716bdc973f2e8e4", - "img\\datasource.png": "8d6dcdddfad512abed8c251404f652383f63ad17bc5c7cbe3e67ad9e6fa0327f", - "img\\query_editor.png": "b8d50f644d413b15aaf0d7b71fdfa4423f1a045761ec368b19a15e3d1aaf9308", + "img/annotations.png": "09cc19df992fede5c4dd830f7b3c7a783702feced07ea9693d417ec127077b00", + "img/clickhouse_logo.svg": "111c2048c9bad4a11b0273cf17839696d98968c04cdcc5ea0716bdc973f2e8e4", + "img/datasource.png": "8d6dcdddfad512abed8c251404f652383f63ad17bc5c7cbe3e67ad9e6fa0327f", + "img/query_editor.png": "b8d50f644d413b15aaf0d7b71fdfa4423f1a045761ec368b19a15e3d1aaf9308", "LICENSE": "a434fc6dd97d5c425c6edbeff0276afd60ab5fffab3ed2c563f95a389502d074", "module.js": "3c7c7e44b69f8ce10a6727a5896452f270ba8edda0adfd01ee7cf67c4b8c41e7", "module.js.map": "b42c39c5041378a3bd66ad99acc2d453d030af94aadb5331ef241ecb4c2a934f", - "partials\\annotations.editor.html": "14d2d5add7f13c7c722e33bbc53ef83750fb624e5f7d6efee4a9568addc2ab78", - "partials\\config.html": "51ba130304c63c1a00590a9dc94c8351ff6277e4cf695720de57bff87aeec744", - "partials\\query.editor.html": "eb9ab7af412a922ea2ce09c86b99a75ba70000977a5fd882b8e327a2a27e1904", + "partials/annotations.editor.html": "14d2d5add7f13c7c722e33bbc53ef83750fb624e5f7d6efee4a9568addc2ab78", + "partials/config.html": "51ba130304c63c1a00590a9dc94c8351ff6277e4cf695720de57bff87aeec744", + "partials/query.editor.html": "eb9ab7af412a922ea2ce09c86b99a75ba70000977a5fd882b8e327a2a27e1904", "plugin.json": "625340b320494c41964bc8ab3c105a3430036b39a570f09f9e2fcd413b9e88e0", "README.md": "3194fcabb4b7ea1666d2d805a633555afbbe8f45e1e6cd73e3c21d0456cd5f46", - "vertamedia-clickhouse-plugin_darwin_amd64": "41521cc48abac36573ba8994051ae64ea789a77ddf0aab0e6a42db666e63f413", - "vertamedia-clickhouse-plugin_linux_amd64": "d15acd393294b150eae0c2d0114e21afe2ffee9161ef146c97a9d0ca5c0793b9", - "vertamedia-clickhouse-plugin_linux_arm64": "ec89419e6e7717184f3a29f8efd7a42e564cb8c990b097e752c3b5e390e5786f", - "vertamedia-clickhouse-plugin_windows_amd64.exe": "77d4e6096b5d3463e86f8639e8ddd9a0197d500dd29e5ee8b8ed2572e8ff0319" + "vertamedia-clickhouse-plugin_darwin_amd64": "91e4623eb08f5e34b3f4c3a5fc7b2a1f7e1f7bf08e92e4ccf1ab9789f2d4a45e", + "vertamedia-clickhouse-plugin_linux_amd64": "d82fbdc64533a1747a6ef86b3ffab580016d88316122b51343aa4f3a9e6a117d", + "vertamedia-clickhouse-plugin_linux_arm64": "4b43a09498406d9d3dbdea1a1aeeb1b95d076e143e0105425e6e019ba2f63072", + "vertamedia-clickhouse-plugin_windows_amd64.exe": "6220ab6550e602876e9abaeabf012e0736db3fac84278384149d266037ffe5fd" } } -----BEGIN PGP SIGNATURE----- Version: OpenPGP.js v4.10.1 Comment: https://openpgpjs.org -wqEEARMKAAYFAl/XZcUACgkQfk0ManCIZuex1gIIigqN8O8waglyttpzB7WQ -OA2Op1PSo2/4qtLYarjhLZdk4fnW+KuUT+JQ2UJdCdsyTDU73ulrgcBnUM7+ -ViHl4pwCCQHPN9TUPfxvsULaiqRpuGmrUvQY8wCpW/FVD/oFyd2l988IWV8D -OVwbHnuVe4O7T+5u2VBzXeCA+yNwF8fGq4KThQ== -=S1BN +wqIEARMKAAYFAl/ZfkEACgkQfk0ManCIZud6xAIJAf8QB6f71+ohWwCEmSJv +vX9sFze8x+fbNrM7DUcfYX9zUIlyjz/DJE9Ov6IeNIljtOQUIS6BcntlKHMu +C8cjUWarAgkBs3PIlX//llif04PXuldQ97xHgUAqNpQbdu0CTRDwzPLr1UWJ +xepBURNx1JcSE/qWxHnersRRYRqLeqPa5ZtdMKY= +=mTmG -----END PGP SIGNATURE----- diff --git a/dist/vertamedia-clickhouse-plugin_darwin_amd64 b/dist/vertamedia-clickhouse-plugin_darwin_amd64 index 01b91c7e3..819ac345d 100644 Binary files a/dist/vertamedia-clickhouse-plugin_darwin_amd64 and b/dist/vertamedia-clickhouse-plugin_darwin_amd64 differ diff --git a/dist/vertamedia-clickhouse-plugin_linux_amd64 b/dist/vertamedia-clickhouse-plugin_linux_amd64 index 009b74926..c4b22d33e 100755 Binary files a/dist/vertamedia-clickhouse-plugin_linux_amd64 and b/dist/vertamedia-clickhouse-plugin_linux_amd64 differ diff --git a/dist/vertamedia-clickhouse-plugin_linux_arm64 b/dist/vertamedia-clickhouse-plugin_linux_arm64 index 067482a67..d225450a4 100644 Binary files a/dist/vertamedia-clickhouse-plugin_linux_arm64 and b/dist/vertamedia-clickhouse-plugin_linux_arm64 differ diff --git a/dist/vertamedia-clickhouse-plugin_windows_amd64.exe b/dist/vertamedia-clickhouse-plugin_windows_amd64.exe index 4dfde333f..e4f763980 100644 Binary files a/dist/vertamedia-clickhouse-plugin_windows_amd64.exe and b/dist/vertamedia-clickhouse-plugin_windows_amd64.exe differ diff --git a/release.sh b/release.sh index 54119a509..a0fb77085 100644 --- a/release.sh +++ b/release.sh @@ -22,4 +22,4 @@ bump2version --verbose $1 docker-compose run plugin_signer git add . git commit -s -m "sign plugin, $(grep current_version .bumpversion.cfg)" -git push +git push --tags