Skip to content

Commit 3a24659

Browse files
authored
Merge pull request #412 from jdolitsky/0.13-release
prepare for v0.13.0 release
2 parents c0e6254 + b17e271 commit 3a24659

20 files changed

+922
-456
lines changed

.github/workflows/build-pr.yml

+1-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
- name: setup go environment
1515
uses: actions/setup-go@v1
1616
with:
17-
go-version: '1.15.4'
17+
go-version: '1.15.7'
1818
- name: download dependencies
1919
run: make bootstrap
2020
- name: run unit tests
@@ -35,4 +35,3 @@ jobs:
3535
name: chartmuseum-acceptance-report-${{ github.sha }}
3636
path: .robot/
3737
if: always()
38-

.github/workflows/build.yml

+35-43
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
name: build
22

33
on:
4-
5-
# TODO: renable cron after moving off of Docker Hub
6-
# schedule:
7-
# - cron: '0 0 * * *' # everyday at midnight UTC
8-
94
push:
10-
branches: main
5+
branches:
6+
- main
117
tags:
128
- v*
139

@@ -20,7 +16,7 @@ jobs:
2016
- name: setup go environment
2117
uses: actions/setup-go@v1
2218
with:
23-
go-version: '1.15.4'
19+
go-version: '1.15.7'
2420
- name: download dependencies
2521
run: make bootstrap
2622
- name: run unit tests
@@ -29,74 +25,70 @@ jobs:
2925
run: make build-linux
3026
- name: run acceptance tests
3127
run: sudo pip install virtualenv && make acceptance
32-
- name: upload coverage report
33-
uses: actions/upload-artifact@master
34-
with:
35-
name: chartmuseum-coverage-report-${{ github.sha }}
36-
path: .cover/
37-
if: always()
38-
- name: upload acceptance test report
39-
uses: actions/upload-artifact@master
40-
with:
41-
name: chartmuseum-acceptance-report-${{ github.sha }}
42-
path: .robot/
43-
if: always()
4428
- name: Prepare
4529
id: prepare
4630
run: |
47-
DOCKER_IMAGE=chartmuseum/chartmuseum
31+
DOCKER_IMAGE=ghcr.io/helm/chartmuseum
4832
DOCKER_PLATFORMS=linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/386
49-
VERSION=edge
33+
VERSION=canary
5034
5135
if [[ $GITHUB_REF == refs/tags/* ]]; then
52-
VERSION=${GITHUB_REF#refs/tags/v}
36+
VERSION=${GITHUB_REF#refs/tags/}
5337
fi
5438
55-
if [ "${{ github.event_name }}" = "schedule" ]; then
56-
VERSION=nightly
57-
fi
58-
59-
TAGS="--tag ${DOCKER_IMAGE}:${VERSION} --tag ${DOCKER_IMAGE}:latest"
39+
TAGS="--tag ${DOCKER_IMAGE}:${VERSION}"
6040
6141
echo ::set-output name=docker_image::${DOCKER_IMAGE}
6242
echo ::set-output name=version::${VERSION}
6343
echo ::set-output name=buildx_args::--platform ${DOCKER_PLATFORMS} \
6444
--build-arg revision=$(git rev-parse --short HEAD) \
6545
${TAGS} .
66-
-
67-
name: Set up QEMU
46+
- name: Release artifacts
47+
id: release-artifacts
48+
env:
49+
AZURE_STORAGE_CONNECTION_STRING: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}
50+
AZURE_STORAGE_CONTAINER_NAME: ${{ secrets.AZURE_STORAGE_CONTAINER_NAME }}
51+
run: |
52+
VERSION="${{ steps.prepare.outputs.version }}" ./scripts/release-artifacts.sh
53+
- name: Set up QEMU
6854
uses: docker/setup-qemu-action@v1
6955
with:
7056
platforms: all
71-
-
72-
name: Set up Docker Buildx
57+
- name: Set up Docker Buildx
7358
id: buildx
7459
uses: docker/setup-buildx-action@v1
7560
with:
7661
version: latest
77-
-
78-
name: Available platforms
62+
- name: Available platforms
7963
run: echo ${{ steps.buildx.outputs.platforms }}
8064
- name: Docker Buildx (build)
8165
run: |
8266
docker buildx build --no-cache --pull --output "type=image,push=false" ${{ steps.prepare.outputs.buildx_args }}
8367
- name: Docker Login
84-
if: success() && github.event_name != 'pull_request'
85-
env:
86-
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
87-
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
88-
run: |
89-
echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin
68+
uses: docker/login-action@v1
69+
with:
70+
registry: ghcr.io
71+
username: ${{ secrets.GHCR_USERNAME }}
72+
password: ${{ secrets.GHCR_PASSWORD }}
9073
- name: Docker Buildx (push)
91-
if: success() && github.event_name != 'pull_request'
9274
run: |
9375
docker buildx build --output "type=image,push=true" ${{ steps.prepare.outputs.buildx_args }}
9476
- name: Docker Check Manifest
95-
if: always() && github.event_name != 'pull_request'
9677
run: |
9778
docker run --rm mplatform/mquery ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}
9879
- name: Clear
99-
if: always() && github.event_name != 'pull_request'
80+
if: always()
10081
run: |
10182
rm -f ${HOME}/.docker/config.json
102-
83+
- name: upload coverage report
84+
uses: actions/upload-artifact@master
85+
with:
86+
name: chartmuseum-coverage-report-${{ github.sha }}
87+
path: .cover/
88+
if: always()
89+
- name: upload acceptance test report
90+
uses: actions/upload-artifact@master
91+
with:
92+
name: chartmuseum-acceptance-report-${{ github.sha }}
93+
path: .robot/
94+
if: always()

.github/workflows/release.yml

-84
This file was deleted.

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@ index.yaml
2121
mirror/
2222
testbin/
2323
cmd/chartmuseum/debug
24-
vendor
24+
vendor
25+
_dist/

Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
FROM golang:alpine
44

5-
ARG version=0.12.0
5+
ARG version=0.13.0
66

7-
ARG revision=master
7+
ARG revision=main
88

99
COPY . /go/src/github.com/helm/chartmuseum
1010

KEYS

+137
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
This file contains the PGP keys of developers who have signed releases of ChartMuseum.
2+
3+
For your convenience, commands are provided for those who use pgp and gpg.
4+
5+
For users to import keys:
6+
pgp < KEYS
7+
or
8+
gpg --import KEYS
9+
10+
Developers to add their keys:
11+
pgp -kxa <your name> and append it to this file.
12+
or
13+
(pgpk -ll <your name> && pgpk -xa <your name>) >> KEYS
14+
or
15+
(gpg --list-sigs <your name>
16+
&& gpg --armor --export <your name>) >> KEYS
17+
18+
pub rsa4096 2021-01-14 [C] [expires: 2031-01-12]
19+
E97F9DA5AE2E39CF48A142B7852A7470A39FB81D
20+
uid [ unknown] Josh Dolitsky <[email protected]>
21+
sig 3 852A7470A39FB81D 2021-01-14 Josh Dolitsky <[email protected]>
22+
sub rsa4096 2021-01-14 [E] [expires: 2031-01-12]
23+
sig 852A7470A39FB81D 2021-01-14 Josh Dolitsky <[email protected]>
24+
sub rsa4096 2021-01-14 [S] [expires: 2031-01-12]
25+
sig 852A7470A39FB81D 2021-01-14 Josh Dolitsky <[email protected]>
26+
sub rsa4096 2021-01-14 [A] [expires: 2031-01-12]
27+
sig 852A7470A39FB81D 2021-01-14 Josh Dolitsky <[email protected]>
28+
29+
-----BEGIN PGP PUBLIC KEY BLOCK-----
30+
31+
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
136+
=uijW
137+
-----END PGP PUBLIC KEY BLOCK-----

0 commit comments

Comments
 (0)