Skip to content

Commit

Permalink
Merge pull request #3 from DFE-Digital/AddGithubActions
Browse files Browse the repository at this point in the history
Added New GitHub actions
  • Loading branch information
MartinBelton-gov authored Dec 4, 2023
2 parents 8b2f051 + 5db5535 commit df90d98
Show file tree
Hide file tree
Showing 12 changed files with 282 additions and 5 deletions.
104 changes: 104 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: CI

on:
push:
branches:
- master
- main
pull_request:
branches:
- master
- main

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Find and Change Directory
run: |
DIRECTORY=$(find . -type d -name "dfe-azurecostbackend-datasource" -print -quit)
if [ -n "$DIRECTORY" ]; then
echo "Directory found: $DIRECTORY"
cd $DIRECTORY
pwd
else
echo "Directory not found"
exit 1
fi
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20.10.0'


- name: Change Directory
run: cd /home/runner/work/Grafana.Plugin.CostManagement/Grafana.Plugin.CostManagement/dfe-azurecostbackend-datasource
- name: Install dependencies and run npm commands
run: |
cd /home/runner/work/Grafana.Plugin.CostManagement/Grafana.Plugin.CostManagement/dfe-azurecostbackend-datasource
npm install
npm ci
npm run typecheck
npm run lint
npm run test:ci
npm run build
shell: bash

- name: Check for backend
id: check-for-backend
run: |
if [ -f "/home/runner/work/Grafana.Plugin.CostManagement/Grafana.Plugin.CostManagement/dfe-azurecostbackend-datasource/Magefile.go" ]; then
echo "has-backend=true" >> $GITHUB_OUTPUT
fi
- name: Setup Go environment
if: steps.check-for-backend.outputs.has-backend == 'true'
uses: actions/setup-go@v4
with:
go-version: '^1.21.4'
check-latest: true
- run: go version

- name: Install Mage
run: |
git clone https://github.com/magefile/mage
cd mage
go run bootstrap.go
- name: Build backend
if: steps.check-for-backend.outputs.has-backend == 'true'
run: |
mage -v build:linux
working-directory: ${{ github.workspace }}/dfe-azurecostbackend-datasource

- name: Check for E2E
id: check-for-e2e
run: |
if [ -d "cypress" ]
then
echo "has-e2e=true" >> $GITHUB_OUTPUT
fi
- name: Start grafana docker
if: steps.check-for-e2e.outputs.has-e2e == 'true'
run: docker-compose up -d

- name: Run e2e tests
if: steps.check-for-e2e.outputs.has-e2e == 'true'
run: npm run e2e

- name: Stop grafana docker
if: steps.check-for-e2e.outputs.has-e2e == 'true'
run: docker-compose down

#- name: Archive E2E output
# uses: actions/upload-artifact@v3
# if: steps.check-for-e2e.outputs.has-e2e == 'true' && steps.run-e2e-tests.outcome != 'success'
# with:
# name: cypress-videos
# path: cypress/videos
# retention-days: 5
159 changes: 159 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
name: Release

on:
workflow_dispatch:
push:
tags:
- 'v*' # Run workflow on version tags, e.g. v1.0.0.

jobs:
release:
runs-on: ubuntu-latest
#env:
# usage of GRAFANA_API_KEY is deprecated
# GRAFANA_API_KEY: ${{ secrets.GRAFANA_API_KEY }}
# GRAFANA_ACCESS_POLICY_TOKEN: ${{ secrets.GRAFANA_ACCESS_POLICY_TOKEN }}
steps:
- run: echo ${GITHUB_WORKSPACE}
- uses: actions/checkout@v3

# - name: Change Directory
# run: cd /home/runner/work/Grafana.Plugin.CostManagement/Grafana.Plugin.CostManagement/dfe-azurecostbackend-datasource
# - name: Install dependencies and run npm commands
# run: |
# cd /home/runner/work/Grafana.Plugin.CostManagement/Grafana.Plugin.CostManagement/dfe-azurecostbackend-datasource
# npm install
# npm ci
# npm run typecheck
# npm run lint
# npm run test:ci
# npm run build
# shell: bash


- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: '20.9.0'
cache: 'npm'
cache-dependency-path: /home/runner/work/Grafana.Plugin.CostManagement/Grafana.Plugin.CostManagement/dfe-azurecostbackend-datasource/package-lock.json


- name: Setup Go environment
uses: actions/setup-go@v4
with:
go-version: '^1.21.4'
check-latest: true
- run: go version

- name: Install dependencies
run: npm ci

- name: Build and test frontend
run: npm run build

# - name: Check for backend
# id: check-for-backend
# run: |
# if [ -f "Magefile.go" ]
# then
# echo "has-backend=true" >> $GITHUB_OUTPUT
# fi

- name: Check for backend
id: check-for-backend
run: |
if [ -f "/home/runner/work/Grafana.Plugin.CostManagement/Grafana.Plugin.CostManagement/dfe-azurecostbackend-datasource/Magefile.go" ]; then
echo "has-backend=true" >> $GITHUB_OUTPUT
fi
- name: Install Mage
run: |
git clone https://github.com/magefile/mage
cd mage
go run bootstrap.go
- name: Build backend
if: steps.check-for-backend.outputs.has-backend == 'true'
run: |
mage -v build:linux
working-directory: ${{ github.workspace }}/dfe-azurecostbackend-datasource

- name: Warn missing Grafana access policy token
run: |
echo Please generate a Grafana access policy token: https://grafana.com/developers/plugin-tools/publish-a-plugin/sign-a-plugin#generate-an-access-policy-token
echo Once done please follow the instructions found here: https://github.com/${{github.repository}}/blob/main/README.md#using-github-actions-release-workflow
# if: ${{ env.GRAFANA_ACCESS_POLICY_TOKEN == '' }}

- name: Sign plugin
run: npm run sign
# if: ${{ env.GRAFANA_ACCESS_POLICY_TOKEN != '' }}

- name: Get plugin metadata
id: metadata
run: |
sudo apt-get install jq
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 "plugin-id=${GRAFANA_PLUGIN_ID}" >> $GITHUB_OUTPUT
echo "plugin-version=${GRAFANA_PLUGIN_VERSION}" >> $GITHUB_OUTPUT
echo "plugin-type=${GRAFANA_PLUGIN_TYPE}" >> $GITHUB_OUTPUT
echo "archive=${GRAFANA_PLUGIN_ARTIFACT}" >> $GITHUB_OUTPUT
echo "archive-checksum=${GRAFANA_PLUGIN_ARTIFACT_CHECKSUM}" >> $GITHUB_OUTPUT
echo "github-tag=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT
- name: Read changelog
id: changelog
run: |
awk '/^## / {s++} s == 1 {print}' CHANGELOG.md > release_notes.md
echo "path=release_notes.md" >> $GITHUB_OUTPUT
- name: Check package version
run: if [ "v${{ steps.metadata.outputs.plugin-version }}" != "${{ steps.metadata.outputs.github-tag }}" ]; then printf "\033[0;31mPlugin version doesn't match tag name\033[0m\n"; exit 1; fi

- name: Package plugin
id: package-plugin
run: |
mv dist ${{ steps.metadata.outputs.plugin-id }}
zip ${{ steps.metadata.outputs.archive }} ${{ steps.metadata.outputs.plugin-id }} -r
md5sum ${{ steps.metadata.outputs.archive }} > ${{ steps.metadata.outputs.archive-checksum }}
echo "checksum=$(cat ./${{ steps.metadata.outputs.archive-checksum }} | cut -d' ' -f1)" >> $GITHUB_OUTPUT
- name: Validate plugin
run: |
git clone https://github.com/grafana/plugin-validator
pushd ./plugin-validator/pkg/cmd/plugincheck2
go install
popd
plugincheck2 -config ./plugin-validator/config/default.yaml ${{ steps.metadata.outputs.archive }}
- name: Create Github release
uses: softprops/action-gh-release@v1
with:
draft: true
generate_release_notes: true
files: |
./${{ steps.metadata.outputs.archive }}
./${{ steps.metadata.outputs.archive-checksum }}
body: |
**This Github draft release has been created for your plugin.**
_Note: if this is the first release for your plugin please consult the [distributing-your-plugin section](https://github.com/${{github.repository}}/blob/main/README.md#distributing-your-plugin) of the README_
If you would like to submit this release to Grafana please consider the following steps:
- Check the Validate plugin step in the [release workflow](https://github.com/${{github.repository}}/commit/${{github.sha}}/checks/${{github.run_id}}) for any warnings that need attention
- Navigate to https://grafana.com/auth/sign-in/ to sign into your account
- Once logged in click **My Plugins** in the admin navigation
- Click the **Submit Plugin** button
- Fill in the Plugin Submission form:
- Paste this [.zip asset link](https://github.com/${{ github.repository }}/releases/download/v${{ steps.metadata.outputs.plugin-version }}/${{ steps.metadata.outputs.archive }}) in the Plugin URL field
- Paste this [.zip.md5 link](https://github.com/${{ github.repository }}/releases/download/v${{ steps.metadata.outputs.plugin-version }}/${{ steps.metadata.outputs.archive-checksum }}) in the MD5 field
Once done please remove these instructions and publish this release.
10 changes: 10 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name: Manual Test

on:
workflow_dispatch:

jobs:
do-something:
runs-on: ubuntu-latest
steps:
- run: echo "Hello I have been triggered Manually"

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -183,3 +183,4 @@ export function ConfigEditor(props: Props) {
</div>
);
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,4 @@ export function QueryEditor({ query, onChange, onRunQuery }: Props) {
</div>
);
}

2 changes: 1 addition & 1 deletion dfe-azurecostbackend-datasource/src/datasource.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dfe-azurecostbackend-datasource/src/datasource.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ export class DataSource extends DataSourceWithBackend<MyQuery, MyDataSourceOptio
return DEFAULT_QUERY
}
}

2 changes: 1 addition & 1 deletion dfe-azurecostbackend-datasource/src/module.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dfe-azurecostbackend-datasource/src/types.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dfe-azurecostbackend-datasource/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,4 @@ export interface MySecureJsonData {
SubscriptionID?: string;
Region?: string;
}

0 comments on commit df90d98

Please sign in to comment.