Skip to content

Commit

Permalink
ci: unified release workflow, lint & test workflows
Browse files Browse the repository at this point in the history
37473d0e1a7f972897a57f9dc1e132b78b61c328
  • Loading branch information
kabachook committed Feb 26, 2024
1 parent cde95a0 commit 1fb3bd0
Show file tree
Hide file tree
Showing 6 changed files with 149 additions and 102 deletions.
23 changes: 23 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Lint
on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
golangci:
name: Lint with GolangCI
timeout-minutes: 10
runs-on: ubuntu
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
with:
version: v1.55.2
97 changes: 0 additions & 97 deletions .github/workflows/release-hub.yml

This file was deleted.

99 changes: 96 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
name: Release plugin to GitHub
name: Release plugin

on:
push:
tags:
- "v*"

jobs:
release:
release-gh:
name: Publish to Github Releases
timeout-minutes: 60
runs-on: ubuntu-latest
env:
Expand All @@ -31,4 +32,96 @@ jobs:
version: latest
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

release-hub:
name: Publish to CloudQuery Hub
needs: [release-gh]
timeout-minutes: 60
runs-on: ubuntu-latest
env:
CGO_ENABLED: 0
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Node.js LTS
uses: actions/setup-node@v4
with:
node-version: 'lts/*'
- name: Install dependencies from npm
run: npm i semver@^7.6

- name: Setup Go 1.x
uses: actions/setup-go@v5
with:
go-version-file: go.mod

- name: Setup CloudQuery
uses: cloudquery/setup-cloudquery@v3
with:
version: v5.5.6

- name: Parse and validate semver tag
id: semver-tag
uses: actions/github-script@v7
with:
script: |
const semverParse = require("semver/functions/parse");
const input = context.ref.replace('refs/tags/', '');
const version = semverParse(input);
if (!version) {
throw new Error("invalid semver string")
}
core.setOutput("raw", version.raw);
core.setOutput("version", version.version);
core.setOutput("major", version.major);
core.setOutput("minor", version.minor);
core.setOutput("patch", version.path);
core.setOutput("prerelease", version.prerelease.join("."));
core.setOutput("build", version.build.join("."));
- name: Get Release Notes
id: release-notes
uses: actions/github-script@v7
env:
PRERELEASE: ${{ steps.semver-tag.outputs.prerelease }}
with:
result-encoding: string
retries: 3
script: |
const fs = require('node:fs');
const FILENAME = "message.txt";
const { PRERELEASE } = process.env;
let message;
if (PRERELEASE) {
message = "This is a pre-release version of the plugin and should be used for testing purposes only";
} else {
const { data } = await github.rest.repos.getReleaseByTag({
owner: context.repo.owner,
repo: context.repo.repo,
tag: context.ref.replace('refs/tags/', ''),
});
message = data;
}
fs.writeFileSync(FILENAME, message);
return `@${FILENAME}`; // @ is for cloudquery cli to read from file
- name: Run package command
run: |
go run main.go package -m ${{ steps.release-notes.outputs.result }} v${{ steps.semver-tag.outputs.version }} .
- name: Publish plugin to hub
env:
CLOUDQUERY_API_KEY: ${{ secrets.CLOUDQUERY_API_KEY }}
PRERELEASE: ${{ steps.semver-tag.outputs.prerelease }}
run: |
if [[ -z $PRERELEASE ]]; then
cloudquery plugin publish --finalize
else
cloudquery plugin publish
fi
25 changes: 25 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: "Unit tests"
on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
unitests:
name: Unit tests
timeout-minutes: 15
runs-on: ubuntu-latest
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- name: Set up Go 1.x
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- run: go mod download
- run: go build ./...
- name: Run tests
run: go test -race ./...
6 changes: 4 additions & 2 deletions .mapping.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{
".":"security/cloudquery/github_toplevel/cq-source-yc",
".github/workflows/release-hub.yml":"security/cloudquery/github_toplevel/cq-source-yc/.github/workflows/release-hub.yml",
".github/workflows/lint.yml":"security/cloudquery/github_toplevel/cq-source-yc/.github/workflows/lint.yml",
".github/workflows/release.yml":"security/cloudquery/github_toplevel/cq-source-yc/.github/workflows/release.yml",
".github/workflows/test.yml":"security/cloudquery/github_toplevel/cq-source-yc/.github/workflows/test.yml",
".gitignore":"security/cloudquery/cq-source-yc/.gitignore",
".goreleaser.yaml":"security/cloudquery/github_toplevel/cq-source-yc/.goreleaser.yaml",
"AUTHORS":"security/cloudquery/github_toplevel/cq-source-yc/AUTHORS",
Expand Down Expand Up @@ -181,8 +182,9 @@
"resources/vpc/security_groups.go":"security/cloudquery/cq-source-yc/resources/vpc/security_groups.go",
"resources/vpc/subnets.go":"security/cloudquery/cq-source-yc/resources/vpc/subnets.go",
"resources/ydb/databases.go":"security/cloudquery/cq-source-yc/resources/ydb/databases.go",
"security/cloudquery/github_toplevel/cq-source-yc/.github/workflows/release-hub.yml":"security/cloudquery/github_toplevel/cq-source-yc/.github/workflows/release-hub.yml",
"security/cloudquery/github_toplevel/cq-source-yc/.github/workflows/lint.yml":"security/cloudquery/github_toplevel/cq-source-yc/.github/workflows/lint.yml",
"security/cloudquery/github_toplevel/cq-source-yc/.github/workflows/release.yml":"security/cloudquery/github_toplevel/cq-source-yc/.github/workflows/release.yml",
"security/cloudquery/github_toplevel/cq-source-yc/.github/workflows/test.yml":"security/cloudquery/github_toplevel/cq-source-yc/.github/workflows/test.yml",
"security/cloudquery/github_toplevel/cq-source-yc/.goreleaser.yaml":"security/cloudquery/github_toplevel/cq-source-yc/.goreleaser.yaml",
"security/cloudquery/github_toplevel/cq-source-yc/AUTHORS":"security/cloudquery/github_toplevel/cq-source-yc/AUTHORS",
"security/cloudquery/github_toplevel/cq-source-yc/CHANGELOG.md":"security/cloudquery/github_toplevel/cq-source-yc/CHANGELOG.md",
Expand Down
1 change: 1 addition & 0 deletions client/resourcehierarchy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
)

func TestResourceHierarchy(t *testing.T) {
t.Skip("test not mocked")
ctx := context.Background()
credentials, err := getCredentials()
if err != nil {
Expand Down

0 comments on commit 1fb3bd0

Please sign in to comment.