Copy GitHub setup from crossplane-runtime
Signed-off-by: Nic Cope <nicc@rk0n.org>
This commit is contained in:
parent
4012dbbebe
commit
35b2fdbd6f
|
|
@ -0,0 +1,40 @@
|
||||||
|
---
|
||||||
|
name: Bug Report
|
||||||
|
about: Help us diagnose and fix bugs in Crossplane
|
||||||
|
labels: bug
|
||||||
|
---
|
||||||
|
<!--
|
||||||
|
Thank you for helping to improve Crossplane!
|
||||||
|
|
||||||
|
Please be sure to search for open issues before raising a new one. We use issues
|
||||||
|
for bug reports and feature requests. Please find us at https://slack.crossplane.io
|
||||||
|
for questions, support, and discussion.
|
||||||
|
-->
|
||||||
|
|
||||||
|
### What happened?
|
||||||
|
<!--
|
||||||
|
Please let us know what behaviour you expected and how Crossplane diverged from
|
||||||
|
that behaviour.
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
### How can we reproduce it?
|
||||||
|
<!--
|
||||||
|
Help us to reproduce your bug as succinctly and precisely as possible. Artifacts
|
||||||
|
such as example manifests or a script that triggers the issue are highly
|
||||||
|
appreciated!
|
||||||
|
-->
|
||||||
|
|
||||||
|
### What environment did it happen in?
|
||||||
|
Crossplane version:
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Include at least the version or commit of Crossplane you were running. Consider
|
||||||
|
also including your:
|
||||||
|
|
||||||
|
* Cloud provider or hardware configuration
|
||||||
|
* Kubernetes version (use `kubectl version`)
|
||||||
|
* Kubernetes distribution (e.g. Tectonic, GKE, OpenShift)
|
||||||
|
* OS (e.g. from /etc/os-release)
|
||||||
|
* Kernel (e.g. `uname -a`)
|
||||||
|
-->
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
---
|
||||||
|
name: Feature Request
|
||||||
|
about: Help us make Crossplane more useful
|
||||||
|
labels: enhancement
|
||||||
|
---
|
||||||
|
<!--
|
||||||
|
Thank you for helping to improve Crossplane!
|
||||||
|
|
||||||
|
Please be sure to search for open issues before raising a new one. We use issues
|
||||||
|
for bug reports and feature requests. Please find us at https://slack.crossplane.io
|
||||||
|
for questions, support, and discussion.
|
||||||
|
-->
|
||||||
|
|
||||||
|
### What problem are you facing?
|
||||||
|
<!--
|
||||||
|
Please tell us a little about your use case - it's okay if it's hypothetical!
|
||||||
|
Leading with this context helps frame the feature request so we can ensure we
|
||||||
|
implement it sensibly.
|
||||||
|
--->
|
||||||
|
|
||||||
|
### How could Crossplane help solve your problem?
|
||||||
|
<!--
|
||||||
|
Let us know how you think Crossplane could help with your use case.
|
||||||
|
-->
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
<!--
|
||||||
|
Thank you for helping to improve Crossplane!
|
||||||
|
|
||||||
|
Please read through https://git.io/fj2m9 if this is your first time opening a
|
||||||
|
Crossplane pull request. Find us in https://slack.crossplane.io/messages/dev if
|
||||||
|
you need any help contributing.
|
||||||
|
-->
|
||||||
|
|
||||||
|
### Description of your changes
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Briefly describe what this pull request does. Be sure to direct your reviewers'
|
||||||
|
attention to anything that needs special consideration.
|
||||||
|
|
||||||
|
We love pull requests that resolve an open Crossplane issue. If yours does, you
|
||||||
|
can uncomment the below line to indicate which issue your PR fixes, for example
|
||||||
|
"Fixes #500":
|
||||||
|
|
||||||
|
-->
|
||||||
|
Fixes #
|
||||||
|
|
||||||
|
I have:
|
||||||
|
|
||||||
|
- [ ] Read and followed Crossplane's [contribution process].
|
||||||
|
- [ ] Run `make reviewable test` to ensure this PR is ready for review.
|
||||||
|
|
||||||
|
### How has this code been tested
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Before reviewers can be confident in the correctness of this pull request, it
|
||||||
|
needs to tested and shown to be correct. Briefly describe the testing that has
|
||||||
|
already been done or which is planned for this change.
|
||||||
|
-->
|
||||||
|
|
||||||
|
[contribution process]: https://git.io/fj2m9
|
||||||
|
|
@ -0,0 +1,104 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
|
"extends": [
|
||||||
|
"config:base",
|
||||||
|
"helpers:pinGitHubActionDigests"
|
||||||
|
],
|
||||||
|
// We only want renovate to rebase PRs when they have conflicts,
|
||||||
|
// default "auto" mode is not required.
|
||||||
|
"rebaseWhen": "conflicted",
|
||||||
|
// The maximum number of PRs to be created in parallel
|
||||||
|
"prConcurrentLimit": 5,
|
||||||
|
"postUpdateOptions": ["gomodTidy"],
|
||||||
|
// By default renovate will auto detect whether semantic commits have been used
|
||||||
|
// in the recent history and comply with that, we explicitly disable it
|
||||||
|
"semanticCommits": "disabled",
|
||||||
|
// All PRs should have a label
|
||||||
|
"labels": ["automated"],
|
||||||
|
"regexManagers": [
|
||||||
|
{
|
||||||
|
"description": "Bump Go version ued in workflows",
|
||||||
|
"fileMatch": ["^\\.github\\/workflows\\/[^/]+\\.ya?ml$"],
|
||||||
|
"matchStrings": [
|
||||||
|
"GO_VERSION: '(?<currentValue>.*?)'\\n"
|
||||||
|
],
|
||||||
|
"datasourceTemplate": "golang-version",
|
||||||
|
"depNameTemplate": "golang"
|
||||||
|
}, {
|
||||||
|
"description": "Bump golangci-lint version in workflows and the Makefile",
|
||||||
|
"fileMatch": ["^\\.github\\/workflows\\/[^/]+\\.ya?ml$","^Makefile$"],
|
||||||
|
"matchStrings": [
|
||||||
|
"GOLANGCI_VERSION: 'v(?<currentValue>.*?)'\\n",
|
||||||
|
"GOLANGCILINT_VERSION = (?<currentValue>.*?)\\n"
|
||||||
|
],
|
||||||
|
"datasourceTemplate": "github-tags",
|
||||||
|
"depNameTemplate": "golangci/golangci-lint",
|
||||||
|
"extractVersionTemplate": "^v(?<version>.*)$"
|
||||||
|
}, {
|
||||||
|
"description": "Bump Go required version in workflows and the Makefile",
|
||||||
|
"fileMatch": ["^\\.github\\/workflows\\/[^/]+\\.ya?ml$", "^Makefile$"],
|
||||||
|
"matchStrings": [
|
||||||
|
"GO_REQUIRED_VERSION = (?<currentValue>.*?)\\n",
|
||||||
|
],
|
||||||
|
"datasourceTemplate": "golang-version",
|
||||||
|
"depNameTemplate": "golang",
|
||||||
|
"versioningTemplate": "loose",
|
||||||
|
"extractVersionTemplate": "^(?<version>\\d+\\.\\d+)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
// PackageRules disabled below should be enabled in case of vulnerabilities
|
||||||
|
"vulnerabilityAlerts": {
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
"osvVulnerabilityAlerts": true,
|
||||||
|
"packageRules": [
|
||||||
|
{
|
||||||
|
"description": "Only get docker image updates every 2 weeks to reduce noise",
|
||||||
|
"matchDatasources": ["docker"],
|
||||||
|
"schedule": ["every 2 week on monday"],
|
||||||
|
"enabled": true,
|
||||||
|
}, {
|
||||||
|
"description": "Ignore k8s.io/client-go older versions, they switched to semantic version and old tags are still available in the repo",
|
||||||
|
"matchDatasources": [
|
||||||
|
"go"
|
||||||
|
],
|
||||||
|
"matchDepNames": [
|
||||||
|
"k8s.io/client-go"
|
||||||
|
],
|
||||||
|
"allowedVersions": "<1.0"
|
||||||
|
}, {
|
||||||
|
"description": "Only get dependency digest updates every month to reduce noise",
|
||||||
|
"matchDatasources": [
|
||||||
|
"go"
|
||||||
|
],
|
||||||
|
"matchUpdateTypes": [
|
||||||
|
"digest",
|
||||||
|
],
|
||||||
|
"extends": ["schedule:monthly"],
|
||||||
|
}, {
|
||||||
|
"description": "Single PR for all kubernetes dependency updates, as they usually are all linked",
|
||||||
|
"matchDatasources": [
|
||||||
|
"go"
|
||||||
|
],
|
||||||
|
"groupName": "kubernetes deps",
|
||||||
|
"matchUpdateTypes": [
|
||||||
|
"major",
|
||||||
|
"minor",
|
||||||
|
"patch"
|
||||||
|
],
|
||||||
|
"matchPackagePrefixes": [
|
||||||
|
"k8s.io",
|
||||||
|
"sigs.k8s.io"
|
||||||
|
]
|
||||||
|
}, {
|
||||||
|
"description": "Ignore oss-fuzz, it's not using tags, we'll stick to master",
|
||||||
|
"matchDepTypes": [
|
||||||
|
"action"
|
||||||
|
],
|
||||||
|
"matchDepNames": [
|
||||||
|
"google/oss-fuzz"
|
||||||
|
],
|
||||||
|
"enabled": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
# Configuration for probot-stale - https://github.com/probot/stale
|
||||||
|
|
||||||
|
# Number of days of inactivity before an Issue or Pull Request becomes stale
|
||||||
|
daysUntilStale: 90
|
||||||
|
|
||||||
|
# Number of days of inactivity before a stale Issue or Pull Request is closed.
|
||||||
|
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
|
||||||
|
daysUntilClose: 7
|
||||||
|
|
||||||
|
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
|
||||||
|
exemptLabels:
|
||||||
|
- security
|
||||||
|
|
||||||
|
# Set to true to ignore issues in a project (defaults to false)
|
||||||
|
exemptProjects: false
|
||||||
|
|
||||||
|
# Set to true to ignore issues in a milestone (defaults to false)
|
||||||
|
exemptMilestones: false
|
||||||
|
|
||||||
|
# Label to use when marking as stale
|
||||||
|
staleLabel: wontfix
|
||||||
|
|
||||||
|
# Comment to post when marking as stale. Set to `false` to disable
|
||||||
|
markComment: >
|
||||||
|
This issue has been automatically marked as stale because it has not had
|
||||||
|
recent activity. It will be closed if no further activity occurs. Thank you
|
||||||
|
for your contributions.
|
||||||
|
|
||||||
|
# Comment to post when closing a stale Issue or Pull Request.
|
||||||
|
closeComment: >
|
||||||
|
This issue has been automatically closed due to inactivity. Please re-open
|
||||||
|
if this still requires investigation.
|
||||||
|
|
||||||
|
# Limit the number of actions per hour, from 1-30. Default is 30
|
||||||
|
limitPerRun: 30
|
||||||
|
|
||||||
|
# Limit to only `issues` or `pulls`
|
||||||
|
only: issues
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
name: Backport
|
||||||
|
|
||||||
|
on:
|
||||||
|
# NOTE(negz): This is a risky target, but we run this action only when and if
|
||||||
|
# a PR is closed, then filter down to specifically merged PRs. We also don't
|
||||||
|
# invoke any scripts, etc from within the repo. I believe the fact that we'll
|
||||||
|
# be able to review PRs before this runs makes this fairly safe.
|
||||||
|
# https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
|
||||||
|
pull_request_target:
|
||||||
|
types: [closed]
|
||||||
|
# See also commands.yml for the /backport triggered variant of this workflow.
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# NOTE(negz): I tested many backport GitHub actions before landing on this
|
||||||
|
# one. Many do not support merge commits, or do not support pull requests with
|
||||||
|
# more than one commit. This one does. It also handily links backport PRs with
|
||||||
|
# new PRs, and provides commentary and instructions when it can't backport.
|
||||||
|
# The main gotchas with this action are that it _only_ supports merge commits,
|
||||||
|
# and that PRs _must_ be labelled before they're merged to trigger a backport.
|
||||||
|
open-pr:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
if: github.event.pull_request.merged
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Open Backport PR
|
||||||
|
uses: zeebe-io/backport-action@bd68141f079bd036e45ea8149bc9d174d5a04703 # v1.4.0
|
||||||
|
with:
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
github_workspace: ${{ github.workspace }}
|
||||||
|
|
@ -0,0 +1,227 @@
|
||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- release-*
|
||||||
|
pull_request: {}
|
||||||
|
workflow_dispatch: {}
|
||||||
|
|
||||||
|
env:
|
||||||
|
# Common versions
|
||||||
|
GO_VERSION: '1.21.0'
|
||||||
|
GOLANGCI_VERSION: 'v1.54.2'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check-diff:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4
|
||||||
|
with:
|
||||||
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
|
||||||
|
- name: Find the Go Build Cache
|
||||||
|
id: go
|
||||||
|
run: echo "::set-output name=cache::$(make go.cachedir)"
|
||||||
|
|
||||||
|
- name: Cache the Go Build Cache
|
||||||
|
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3
|
||||||
|
with:
|
||||||
|
path: ${{ steps.go.outputs.cache }}
|
||||||
|
key: ${{ runner.os }}-build-check-diff-${{ hashFiles('**/go.sum') }}
|
||||||
|
restore-keys: ${{ runner.os }}-build-check-diff-
|
||||||
|
|
||||||
|
- name: Cache Go Dependencies
|
||||||
|
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3
|
||||||
|
with:
|
||||||
|
path: .work/pkg
|
||||||
|
key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }}
|
||||||
|
restore-keys: ${{ runner.os }}-pkg-
|
||||||
|
|
||||||
|
- name: Vendor Dependencies
|
||||||
|
run: make vendor vendor.check
|
||||||
|
|
||||||
|
- name: Check Diff
|
||||||
|
run: make check-diff
|
||||||
|
|
||||||
|
detect-noop:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
outputs:
|
||||||
|
noop: ${{ steps.noop.outputs.should_skip }}
|
||||||
|
steps:
|
||||||
|
- name: Detect No-op Changes
|
||||||
|
id: noop
|
||||||
|
uses: fkirc/skip-duplicate-actions@12aca0a884f6137d619d6a8a09fcc3406ced5281 # v5.3.0
|
||||||
|
with:
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
paths_ignore: '["**.md", "**.png", "**.jpg"]'
|
||||||
|
do_not_skip: '["workflow_dispatch", "schedule", "push"]'
|
||||||
|
concurrent_skipping: false
|
||||||
|
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
needs: detect-noop
|
||||||
|
if: needs.detect-noop.outputs.noop != 'true'
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4
|
||||||
|
with:
|
||||||
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
|
||||||
|
- name: Find the Go Build Cache
|
||||||
|
id: go
|
||||||
|
run: echo "::set-output name=cache::$(make go.cachedir)"
|
||||||
|
|
||||||
|
- name: Cache the Go Build Cache
|
||||||
|
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3
|
||||||
|
with:
|
||||||
|
path: ${{ steps.go.outputs.cache }}
|
||||||
|
key: ${{ runner.os }}-build-lint-${{ hashFiles('**/go.sum') }}
|
||||||
|
restore-keys: ${{ runner.os }}-build-lint-
|
||||||
|
|
||||||
|
- name: Cache Go Dependencies
|
||||||
|
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3
|
||||||
|
with:
|
||||||
|
path: .work/pkg
|
||||||
|
key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }}
|
||||||
|
restore-keys: ${{ runner.os }}-pkg-
|
||||||
|
|
||||||
|
- name: Vendor Dependencies
|
||||||
|
run: make vendor vendor.check
|
||||||
|
|
||||||
|
# We could run 'make lint' to ensure our desired Go version, but we prefer
|
||||||
|
# this action because it leaves 'annotations' (i.e. it comments on PRs to
|
||||||
|
# point out linter violations).
|
||||||
|
- name: Lint
|
||||||
|
uses: golangci/golangci-lint-action@3a919529898de77ec3da873e3063ca4b10e7f5cc # v3
|
||||||
|
with:
|
||||||
|
version: ${{ env.GOLANGCI_VERSION }}
|
||||||
|
skip-cache: true # We do our own caching.
|
||||||
|
|
||||||
|
codeql:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
needs: detect-noop
|
||||||
|
if: needs.detect-noop.outputs.noop != 'true'
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4
|
||||||
|
with:
|
||||||
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
|
||||||
|
- name: Find the Go Build Cache
|
||||||
|
id: go
|
||||||
|
run: echo "::set-output name=cache::$(make go.cachedir)"
|
||||||
|
|
||||||
|
- name: Cache the Go Build Cache
|
||||||
|
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3
|
||||||
|
with:
|
||||||
|
path: ${{ steps.go.outputs.cache }}
|
||||||
|
key: ${{ runner.os }}-build-check-diff-${{ hashFiles('**/go.sum') }}
|
||||||
|
restore-keys: ${{ runner.os }}-build-check-diff-
|
||||||
|
|
||||||
|
- name: Cache Go Dependencies
|
||||||
|
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3
|
||||||
|
with:
|
||||||
|
path: .work/pkg
|
||||||
|
key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }}
|
||||||
|
restore-keys: ${{ runner.os }}-pkg-
|
||||||
|
|
||||||
|
- name: Vendor Dependencies
|
||||||
|
run: make vendor vendor.check
|
||||||
|
|
||||||
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@a09933a12a80f87b87005513f0abb1494c27a716 # v2
|
||||||
|
with:
|
||||||
|
languages: go
|
||||||
|
|
||||||
|
- name: Perform CodeQL Analysis
|
||||||
|
uses: github/codeql-action/analyze@a09933a12a80f87b87005513f0abb1494c27a716 # v2
|
||||||
|
|
||||||
|
trivy-scan-fs:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
needs: detect-noop
|
||||||
|
if: needs.detect-noop.outputs.noop != 'true'
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- name: Run Trivy vulnerability scanner in fs mode
|
||||||
|
uses: aquasecurity/trivy-action@41f05d9ecffa2ed3f1580af306000f734b733e54 # 0.11.2
|
||||||
|
with:
|
||||||
|
scan-type: 'fs'
|
||||||
|
ignore-unfixed: true
|
||||||
|
skip-dirs: design
|
||||||
|
scan-ref: '.'
|
||||||
|
exit-code: '1'
|
||||||
|
severity: 'CRITICAL,HIGH'
|
||||||
|
|
||||||
|
unit-tests:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
needs: detect-noop
|
||||||
|
if: needs.detect-noop.outputs.noop != 'true'
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- name: Fetch History
|
||||||
|
run: git fetch --prune --unshallow
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4
|
||||||
|
with:
|
||||||
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
|
||||||
|
- name: Find the Go Build Cache
|
||||||
|
id: go
|
||||||
|
run: echo "::set-output name=cache::$(make go.cachedir)"
|
||||||
|
|
||||||
|
- name: Cache the Go Build Cache
|
||||||
|
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3
|
||||||
|
with:
|
||||||
|
path: ${{ steps.go.outputs.cache }}
|
||||||
|
key: ${{ runner.os }}-build-unit-tests-${{ hashFiles('**/go.sum') }}
|
||||||
|
restore-keys: ${{ runner.os }}-build-unit-tests-
|
||||||
|
|
||||||
|
- name: Cache Go Dependencies
|
||||||
|
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3
|
||||||
|
with:
|
||||||
|
path: .work/pkg
|
||||||
|
key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }}
|
||||||
|
restore-keys: ${{ runner.os }}-pkg-
|
||||||
|
|
||||||
|
- name: Vendor Dependencies
|
||||||
|
run: make vendor vendor.check
|
||||||
|
|
||||||
|
- name: Run Unit Tests
|
||||||
|
run: make -j2 test
|
||||||
|
|
||||||
|
- name: Publish Unit Test Coverage
|
||||||
|
uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # v3
|
||||||
|
with:
|
||||||
|
flags: unittests
|
||||||
|
file: _output/tests/linux_amd64/coverage.txt
|
||||||
|
|
@ -0,0 +1,91 @@
|
||||||
|
name: Comment Commands
|
||||||
|
|
||||||
|
on: issue_comment
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
points:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
if: startsWith(github.event.comment.body, '/points')
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Extract Command
|
||||||
|
id: command
|
||||||
|
uses: xt0rted/slash-command-action@bf51f8f5f4ea3d58abc7eca58f77104182b23e88 # v2
|
||||||
|
with:
|
||||||
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
command: points
|
||||||
|
reaction: "true"
|
||||||
|
reaction-type: "eyes"
|
||||||
|
allow-edits: "false"
|
||||||
|
permission-level: write
|
||||||
|
- name: Handle Command
|
||||||
|
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6
|
||||||
|
env:
|
||||||
|
POINTS: ${{ steps.command.outputs.command-arguments }}
|
||||||
|
with:
|
||||||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
script: |
|
||||||
|
const points = process.env.POINTS
|
||||||
|
|
||||||
|
if (isNaN(parseInt(points))) {
|
||||||
|
console.log("Malformed command - expected '/points <int>'")
|
||||||
|
github.reactions.createForIssueComment({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
comment_id: context.payload.comment.id,
|
||||||
|
content: "confused"
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const label = "points/" + points
|
||||||
|
|
||||||
|
// Delete our needs-points-label label.
|
||||||
|
try {
|
||||||
|
await github.issues.deleteLabel({
|
||||||
|
issue_number: context.issue.number,
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
name: ['needs-points-label']
|
||||||
|
})
|
||||||
|
console.log("Deleted 'needs-points-label' label.")
|
||||||
|
}
|
||||||
|
catch(e) {
|
||||||
|
console.log("Label 'needs-points-label' probably didn't exist.")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add our points label.
|
||||||
|
github.issues.addLabels({
|
||||||
|
issue_number: context.issue.number,
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
labels: [label]
|
||||||
|
})
|
||||||
|
console.log("Added '" + label + "' label.")
|
||||||
|
|
||||||
|
# NOTE(negz): See also backport.yml, which is the variant that triggers on PR
|
||||||
|
# merge rather than on comment.
|
||||||
|
backport:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
if: github.event.issue.pull_request && startsWith(github.event.comment.body, '/backport')
|
||||||
|
steps:
|
||||||
|
- name: Extract Command
|
||||||
|
id: command
|
||||||
|
uses: xt0rted/slash-command-action@bf51f8f5f4ea3d58abc7eca58f77104182b23e88 # v2
|
||||||
|
with:
|
||||||
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
command: backport
|
||||||
|
reaction: "true"
|
||||||
|
reaction-type: "eyes"
|
||||||
|
allow-edits: "false"
|
||||||
|
permission-level: write
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Open Backport PR
|
||||||
|
uses: zeebe-io/backport-action@bd68141f079bd036e45ea8149bc9d174d5a04703 # v1.4.0
|
||||||
|
with:
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
github_workspace: ${{ github.workspace }}
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
name: Promote
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: 'Release version (e.g. v0.1.0)'
|
||||||
|
required: true
|
||||||
|
channel:
|
||||||
|
description: 'Release channel'
|
||||||
|
required: true
|
||||||
|
default: 'alpha'
|
||||||
|
|
||||||
|
env:
|
||||||
|
# Common users. We can't run a step 'if secrets.AWS_USR != ""' but we can run
|
||||||
|
# a step 'if env.AWS_USR' != ""', so we copy these to succinctly test whether
|
||||||
|
# credentials have been provided before trying to run steps that need them.
|
||||||
|
DOCKER_USR: ${{ secrets.DOCKER_USR }}
|
||||||
|
AWS_USR: ${{ secrets.AWS_USR }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
promote-artifacts:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- name: Fetch History
|
||||||
|
run: git fetch --prune --unshallow
|
||||||
|
|
||||||
|
- name: Login to Docker
|
||||||
|
uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc # v2
|
||||||
|
if: env.DOCKER_USR != ''
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USR }}
|
||||||
|
password: ${{ secrets.DOCKER_PSW }}
|
||||||
|
|
||||||
|
- name: Promote Artifacts in S3 and Docker Hub
|
||||||
|
if: env.AWS_USR != '' && env.DOCKER_USR != ''
|
||||||
|
run: make -j2 promote BRANCH_NAME=${GITHUB_REF##*/}
|
||||||
|
env:
|
||||||
|
VERSION: ${{ github.event.inputs.version }}
|
||||||
|
CHANNEL: ${{ github.event.inputs.channel }}
|
||||||
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_USR }}
|
||||||
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_PSW }}
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
name: Tag
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: 'Release version (e.g. v0.1.0)'
|
||||||
|
required: true
|
||||||
|
message:
|
||||||
|
description: 'Tag message'
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
create-tag:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||||
|
|
||||||
|
- name: Create Tag
|
||||||
|
uses: negz/create-tag@39bae1e0932567a58c20dea5a1a0d18358503320 # v1
|
||||||
|
with:
|
||||||
|
version: ${{ github.event.inputs.version }}
|
||||||
|
message: ${{ github.event.inputs.message }}
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
Loading…
Reference in New Issue