Skip to content

Commit 85d5cbc

Browse files
committed
[WIP] goreleaser tooling
1 parent 237c1ab commit 85d5cbc

File tree

22 files changed

+578
-536
lines changed

22 files changed

+578
-536
lines changed

.ci/gpg/create-keyring.sh

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/bin/bash
2+
3+
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
4+
5+
# Modified from https://blogs.itemis.com/en/secure-your-travis-ci-releases-part-2-signature-with-openpgp
6+
7+
function err_exit() {
8+
echo "ERROR: ${1:-"Unknown Error"} Exiting." 1>&2
9+
exit 1
10+
}
11+
12+
declare -r GPG_HOME="${DIR}/keyring"
13+
declare -r SECRING_AUTO="${GPG_HOME}/secring.auto"
14+
declare -r PUBRING_AUTO="${GPG_HOME}/pubring.auto"
15+
16+
mkdir -p "$GPG_HOME"
17+
cp "${DIR}"/*.auto* "${GPG_HOME}"
18+
19+
echo -e "\nDecrypting secret gpg keyring..."
20+
{
21+
# $GPG_PASSWORD is taken from the script's env (injected by Travis CI).
22+
echo $GPG_PASSWORD | gpg --decrypt \
23+
--pinentry-mode loopback --batch \
24+
--passphrase-fd 0 \
25+
--output "${SECRING_AUTO}" \
26+
"${SECRING_AUTO}".gpg ; \
27+
} || { err_exit "Failed to decrypt secret gpg keyring." ; }
28+
echo "Success!"
29+
30+
echo -e "\nImporting keyrings..."
31+
{ gpg --home "${GPG_HOME}" --import "${SECRING_AUTO}" ; } || { err_exit "Could not import secret keyring into gpg." ; }
32+
{ gpg --home "${GPG_HOME}" --import "${PUBRING_AUTO}" ; } || { err_exit "Could not import public keyring into gpg." ; }
33+
echo "Success!"

.ci/gpg/pubring.auto

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
-----BEGIN PGP PUBLIC KEY BLOCK-----
2+
3+
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
62+
dlF2O4uTr4frwKRl28eGEQ==
63+
=ebPb
64+
-----END PGP PUBLIC KEY BLOCK-----

.ci/gpg/secring.auto.gpg

5.11 KB
Binary file not shown.

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
/dist
77
/tools/bin
88
/images/*/bin
9+
/changelog/generated
10+
11+
# CI GPG keyring
12+
/.ci/gpg/keyring
913

1014
# Website
1115
website/public/

.goreleaser.yml

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# Global environment variables for builds.
2+
env:
3+
- CGO_ENABLED=0
4+
- GO111MODULE=on
5+
- GOPROXY=https://proxy.golang.org|direct
6+
- REPO=github.com/operator-framework/operator-sdk
7+
8+
# Hooks to run before any build is run.
9+
before:
10+
hooks:
11+
- go version | grep --quiet "go1\.15\.2" || echo "Go binary version must be 1.15.2"
12+
- go mod download
13+
14+
# Binary builds.
15+
builds:
16+
# operator-sdk build steps
17+
- id: operator-sdk
18+
main: ./cmd/operator-sdk
19+
binary: operator-sdk
20+
mod_timestamp: "{{ .CommitTimestamp }}"
21+
asmflags: &build-asmflags
22+
- all=-trimpath={{ .Env.PWD }}
23+
gcflags: &build-gcflags
24+
- all=-trimpath={{ .Env.PWD }}
25+
ldflags: &build-ldflags
26+
- -X {{ .Env.REPO }}/internal/version.Version={{ .Env.SIMPLE_VERSION }}
27+
- -X {{ .Env.REPO }}/internal/version.GitVersion={{ .Env.GIT_VERSION }}
28+
- -X {{ .Env.REPO }}/internal/version.GitCommit={{ .Env.GIT_COMMIT }}
29+
- -X {{ .Env.REPO }}/internal/version.KubernetesVersion={{ .Env.K8S_VERSION }}
30+
targets: &build-targets
31+
- darwin_amd64
32+
- linux_amd64
33+
- linux_arm64
34+
- linux_ppc64le
35+
- linux_s390x
36+
37+
# ansible-operator build steps
38+
- id: ansible-operator
39+
main: ./cmd/ansible-operator
40+
binary: ansible-operator
41+
mod_timestamp: "{{ .CommitTimestamp }}"
42+
asmflags: *build-asmflags
43+
gcflags: *build-gcflags
44+
ldflags: *build-ldflags
45+
targets: *build-targets
46+
47+
# helm-operator build steps
48+
- id: helm-operator
49+
main: ./cmd/helm-operator
50+
binary: helm-operator
51+
mod_timestamp: "{{ .CommitTimestamp }}"
52+
asmflags: *build-asmflags
53+
gcflags: *build-gcflags
54+
ldflags: *build-ldflags
55+
targets: *build-targets
56+
57+
# Use most recent tag and short commit for snapshot version.
58+
snapshot:
59+
name_template: "{{ .Env.GIT_VERSION }}"
60+
61+
# We don't use archives, so skip creating them.
62+
archives:
63+
- format: binary
64+
name_template: "{{ .Binary }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}{{ if .Mips }}_{{ .Mips }}{{ end }}"
65+
66+
checksum:
67+
name_template: "checksums.txt"
68+
69+
# Sign the checksum file with the CI GPG key.
70+
signs:
71+
- signature: "${artifact}.asc"
72+
artifacts: checksum
73+
# Use the CI signing subkey A20B5C7E decrypted into .ci/gpg/keyring to sign the release.
74+
args: ["--home", ".ci/gpg/keyring", "-u", "A20B5C7E", "--output", "${signature}", "--detach-sign", "${artifact}"]
75+
76+
# We use a custom changelog generator.
77+
changelog:
78+
79+
# TODO(estroz): configure homebrew publishing
80+
# brews:
81+
# - name: operator-sdk
82+
# ids:
83+
# - operator-sdk
84+
85+
# Uncomment for testing
86+
# release:
87+
# github:
88+
# owner: <your-github-namespace>
89+
# name: operator-sdk

.travis.yml

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ dist: xenial
33

44
language: go
55
go:
6-
- 1.15.x
6+
- 1.15.2
77
go_import_path: github.com/operator-framework/operator-sdk
88

99
cache:
@@ -47,12 +47,16 @@ x_base_steps:
4747
- docker
4848

4949
stages:
50-
- check
51-
- test
50+
- name: check
51+
if: type == pull_request
52+
- name: test
53+
if: type == pull_request
5254
- name: deploy
5355
if: type != pull_request AND ( tag IS present OR branch = master OR commit_message =~ /\[travis deploy\]/ )
5456
- name: deploy-manifest-multiarch
5557
if: type != pull_request AND ( tag IS present OR branch = master OR commit_message =~ /\[travis deploy\]/ )
58+
- name: release
59+
if: type != pull_request AND tag IS present
5660

5761
jobs:
5862
include:
@@ -151,3 +155,11 @@ jobs:
151155
name: push manifest lists
152156
<<: *manifest-deploy
153157
script: make -f release/Makefile image-push-multiarch
158+
159+
## Release jobs ##
160+
161+
- stage: release
162+
name: publish release
163+
before_install: git fetch origin --unshallow --tags
164+
before_script: .ci/gpg/create-keyring.sh
165+
script: make release

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
**This file will no longer be updated. Instead, refer to generated `changelog/generated/<version>.md`**
2+
13
## v1.1.0
24

35
### Additions
@@ -35,7 +37,7 @@
3537
- When generating bundles and packagemanifests, remove `metadata.namespace` from namespaced resources when writing them into the `manifests` directory to avoid validation errors. ([#3813](https://github.com/operator-framework/operator-sdk/pull/3813))
3638
- Fixed a bug that caused the Helm operator not to set the `InstallSuccessful` and `UpgradeSuccessful` status reasons when the status update fails during installation and upgrade. ([#3735](https://github.com/operator-framework/operator-sdk/pull/3735))
3739
- Bumped helm and k8s dependencies to v3.3.4 and v1.18.8 to fix [this upstream bug](https://github.com/kubernetes/kubernetes/issues/91615). ([#3936](https://github.com/operator-framework/operator-sdk/pull/3936))
38-
- In Ansible projects, fix operator permissions for Openshift deployments by adding a `<resource>/finalizers` rule in the operator's role. ([#3779](https://github.com/operator-framework/operator-sdk/pull/3779))
40+
- In Helm projects, fix operator permissions for Openshift deployments by adding a `<resource>/finalizers` rule in the operator's role. ([#3779](https://github.com/operator-framework/operator-sdk/pull/3779))
3941
- In Go projects, resolved an issue that caused failing tests by changing the Makefile's `test` target to automatically download and configure the necessary `envtest` binaries. ([#3983](https://github.com/operator-framework/operator-sdk/pull/3983))
4042
- Inform user to verify the presence of olm deployment manifests in github when `olm install` command gives a 404 http error. ([#3907](https://github.com/operator-framework/operator-sdk/pull/3907))
4143
- Prevent `run packagemanifests` from creating an OperatorGroup if one already exists in a namespace, and use that OperatorGroup if its target namespaces exactly match those passed in `--install-mode`. See [#3681](https://github.com/operator-framework/operator-sdk/issues/3681). ([#3689](https://github.com/operator-framework/operator-sdk/pull/3689))

Makefile

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ export GIT_COMMIT = $(shell git rev-parse HEAD)
77
export K8S_VERSION = 1.18.8
88

99
# Build settings
10+
export TOOLS_DIR = tools/bin
11+
export SCRIPTS_DIR = tools/scripts
1012
REPO = $(shell go list -m)
1113
BUILD_DIR = build
12-
TOOLS_DIR = tools/bin
13-
SCRIPTS_DIR = tools/scripts
1414
GO_ASMFLAGS = -asmflags "all=-trimpath=$(shell dirname $(PWD))"
1515
GO_GCFLAGS = -gcflags "all=-trimpath=$(shell dirname $(PWD))"
1616
GO_BUILD_ARGS = \
@@ -67,8 +67,6 @@ build/scorecard-test build/scorecard-test-kuttl build/custom-scorecard-tests:
6767
build/operator-sdk build/ansible-operator build/helm-operator:
6868
go build $(GO_BUILD_ARGS) -o $(BUILD_DIR)/$(@F) ./cmd/$(@F)
6969

70-
##@ Dev images
71-
7270
# Convenience wrapper for building all remotely hosted images.
7371
.PHONY: image-build
7472
IMAGE_TARGET_LIST = operator-sdk helm-operator ansible-operator scorecard-test scorecard-test-kuttl
@@ -84,6 +82,16 @@ image/%: build/%
8482
docker build -t $(BUILD_IMAGE_REPO)/$*:dev -f ./images/$*/Dockerfile ./images/$*
8583
rm -rf $(BUILD_DIR)
8684

85+
##@ Release
86+
87+
.PHONY: prerelease
88+
prerelease: ## Pre-release changes to commit prior to releasing the operator-sdk project
89+
$(MAKE) -f release/Makefile prerelease
90+
91+
.PHONY: tag
92+
tag: ## Create a release tag
93+
$(MAKE) -f release/Makefile tag
94+
8795
##@ Test
8896

8997
.PHONY: test-all
@@ -149,16 +157,6 @@ test-e2e-integration:: ## Run integration tests
149157
./hack/tests/integration.sh
150158
./hack/tests/subcommand-olm-install.sh
151159

152-
# TODO(estroz): remove changelog/release when goreleaser is added as release tool (they shouldn't be exposed as dev targets).
153-
154-
.PHONY: changelog
155-
changelog: ## Generate CHANGELOG.md and migration guide updates
156-
$(MAKE) -f release/Makefile changelog
157-
158-
.PHONY: release
159-
release: clean ## Release the Operator SDK
160-
$(MAKE) -f release/Makefile GO_BUILD_ARGS='$(GO_BUILD_ARGS)'
161-
162160
.DEFAULT_GOAL := help
163161
.PHONY: help
164162
help: ## Show this help screen.

README.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,39 @@ operators easier by providing:
2828
- Tools for scaffolding and code generation to bootstrap a new project fast
2929
- Extensions to cover common operator use cases
3030

31+
## Dependency and platform support
32+
33+
### Go version
34+
35+
Release binaries will be built with the Go compiler version specified in the Operator SDK's [prerequisites section][doc-readme-prereqs].
36+
37+
### Kubernetes versions
38+
39+
As the Operator SDK interacts directly with the Kubernetes API, certain API features are assumed to exist in the target cluster.
40+
The currently supported Kubernetes version will always be listed in the SDK [prerequisites section][doc-readme-prereqs].
41+
42+
### Platforms
43+
44+
The following matrix defines which architectures are supported for GNU Linux:
45+
46+
| | `amd64` | `arm64` | `ppc64le` | `s390x` |
47+
|-------------------------------|-----------------|-----------------|-----------------|-----------------|
48+
| `operator-sdk` |||||
49+
| `ansible-operator` |||||
50+
| `helm-operator` |||||
51+
| `scorecard-test` image |||||
52+
| `scorecard-test-kuttl` image |||| - |
53+
54+
The following matrix defines which architectures are supported for MacOS Darwin:
55+
56+
| | `amd64` |
57+
|-------------------------------|-----------------|
58+
| `operator-sdk` ||
59+
| `ansible-operator` ||
60+
| `helm-operator` ||
61+
62+
Support for the Windows platform is not on the roadmap at this time.
63+
3164
## License
3265

3366
Operator SDK is under Apache 2.0 license. See the [LICENSE][license_file] file for details.

hack/image/push-image-tags.sh

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ function push_image_tags() {
1616
push_image=$1; shift || push_image=$source_image
1717

1818
print_image_info $source_image
19-
print_git_tags
2019

2120
docker_login $push_image
2221

@@ -53,31 +52,4 @@ function print_image_info() {
5352
fi
5453
}
5554

56-
#
57-
# print_git_tags
58-
#
59-
# print_git_tags prints all tags present in the git repository.
60-
#
61-
function print_git_tags() {
62-
git_tags=$(git tag -l | sed 's|^| |')
63-
if [[ -n "$git_tags" ]]; then
64-
echo "Found git tags:"
65-
echo "$git_tags"
66-
echo ""
67-
fi
68-
}
69-
70-
71-
#
72-
# latest_git_version
73-
#
74-
# latest_git_version returns the highest semantic version
75-
# number found in the repository, with the form "vX.Y.Z".
76-
# Version numbers not matching the semver release format
77-
# are ignored.
78-
#
79-
function latest_git_version() {
80-
git tag -l | egrep "${semver_regex}" | sort -V | tail -1
81-
}
82-
8355
push_image_tags "$@"

0 commit comments

Comments
 (0)