From 9f1573685159cc6404284fad2a5b6688300a9b89 Mon Sep 17 00:00:00 2001 From: Scott Rigby Date: Tue, 14 Feb 2023 16:21:56 -0500 Subject: [PATCH] Convert remaining CircleCI config to GitHub Actions Signed-off-by: Scott Rigby --- .circleci/bootstrap.sh | 20 ------------ .circleci/config.yml | 43 ------------------------- .circleci/deploy.sh | 53 ------------------------------- .github/workflows/build-pr.yml | 2 ++ .github/workflows/deploy-az.yml | 56 +++++++++++++++++++++++++++++++++ 5 files changed, 58 insertions(+), 116 deletions(-) delete mode 100755 .circleci/bootstrap.sh delete mode 100644 .circleci/config.yml delete mode 100755 .circleci/deploy.sh create mode 100644 .github/workflows/deploy-az.yml diff --git a/.circleci/bootstrap.sh b/.circleci/bootstrap.sh deleted file mode 100755 index 79d194077..000000000 --- a/.circleci/bootstrap.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash - -# Copyright The Helm Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -set -euo pipefail - -curl -sSL https://github.com/golangci/golangci-lint/releases/download/v$GOLANGCI_LINT_VERSION/golangci-lint-$GOLANGCI_LINT_VERSION-linux-amd64.tar.gz | tar xz -sudo mv golangci-lint-$GOLANGCI_LINT_VERSION-linux-amd64/golangci-lint /usr/local/bin/golangci-lint -rm -rf golangci-lint-$GOLANGCI_LINT_VERSION-linux-amd64 diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 36e137bfd..000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,43 +0,0 @@ ---- -version: 2 - -jobs: - build: - working_directory: ~/helm.sh/helm - docker: - - image: cimg/go:1.18 - - auth: - username: $DOCKER_USER - password: $DOCKER_PASS - - environment: - GOCACHE: "/tmp/go/cache" - GOLANGCI_LINT_VERSION: "1.46.2" - - steps: - - checkout - - run: - name: install test dependencies - command: .circleci/bootstrap.sh - - run: - name: test style - command: make test-style - - run: - name: test - command: make test-coverage - - run: - name: test build - command: make - - deploy: - name: deploy - command: .circleci/deploy.sh - -workflows: - version: 2 - build: - jobs: - - build: - filters: - tags: - only: /.*/ diff --git a/.circleci/deploy.sh b/.circleci/deploy.sh deleted file mode 100755 index c886d46ce..000000000 --- a/.circleci/deploy.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env bash - -# Copyright The Helm Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -set -euo pipefail - -# Skip on pull request builds -if [[ -n "${CIRCLE_PR_NUMBER:-}" ]]; then - exit -fi - -: ${AZURE_STORAGE_CONNECTION_STRING:?"AZURE_STORAGE_CONNECTION_STRING environment variable is not set"} -: ${AZURE_STORAGE_CONTAINER_NAME:?"AZURE_STORAGE_CONTAINER_NAME environment variable is not set"} - -VERSION= -if [[ -n "${CIRCLE_TAG:-}" ]]; then - VERSION="${CIRCLE_TAG}" -elif [[ "${CIRCLE_BRANCH:-}" == "main" ]]; then - VERSION="canary" -else - echo "Skipping deploy step; this is neither a releasable branch or a tag" - exit -fi - -echo "Installing Azure CLI" -echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ jammy main" | sudo tee /etc/apt/sources.list.d/azure-cli.list -curl -L https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -sudo apt install apt-transport-https -sudo apt update -sudo apt install azure-cli - - -echo "Building helm binaries" -make build-cross -make dist checksum VERSION="${VERSION}" - -echo "Pushing binaries to Azure" -if [[ "${VERSION}" == "canary" ]]; then - az storage blob upload-batch -s _dist/ -d "$AZURE_STORAGE_CONTAINER_NAME" --pattern 'helm-*' --connection-string "$AZURE_STORAGE_CONNECTION_STRING" --overwrite -else - az storage blob upload-batch -s _dist/ -d "$AZURE_STORAGE_CONTAINER_NAME" --pattern 'helm-*' --connection-string "$AZURE_STORAGE_CONNECTION_STRING" -fi diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml index a8ad9b8c7..91141c291 100644 --- a/.github/workflows/build-pr.yml +++ b/.github/workflows/build-pr.yml @@ -27,3 +27,5 @@ jobs: run: make test-style - name: Run unit tests run: make test-coverage + - name: Test build + run: make test build diff --git a/.github/workflows/deploy-az.yml b/.github/workflows/deploy-az.yml new file mode 100644 index 000000000..556083329 --- /dev/null +++ b/.github/workflows/deploy-az.yml @@ -0,0 +1,56 @@ +name: deploy +on: + push: + branches: + - main + tags: + - '*' +jobs: + # Note the only differences between upload-canary and uplaod-tag jobs are: + # - only canary passes --overwrite flag + # - the VERSION make variable passed to 'make dist checksum' is expected to + # be "canary" if the job is triggered by a push to "main" branch. If the + # job is triggered by a tag push, VERSION should be the tag ref. + upload-canary: + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/main' + steps: + - uses: actions/checkout@v2 + - name: Setup Go + uses: actions/setup-go@v2 + with: + go-version: '1.18' + - name: Build helm binaries + run: | + make build-cross + make dist checksum VERSION=canary + - uses: bacongobbler/azure-blob-storage-upload@v3.0.0 + with: + source_dir: _dist + container_name: ${{ secrets.AzureStorageContainerName }} + connection_string: ${{ secrets.AzureStorageConnectionString }} + # Possible solution to https://github.com/bacongobbler/azure-blob-storage-upload/issues/31 + # extra_args: "--pattern 'helm-*'" + extra_args: '--pattern helm-*' + # WARNING: this will overwrite existing blobs in your blob storage + overwrite: 'true' + + upload-tag: + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/v') + steps: + - uses: actions/checkout@v2 + - name: Setup Go + uses: actions/setup-go@v2 + with: + go-version: '1.18' + - name: Build helm binaries + run: | + make build-cross + make dist checksum VERSION="${{ github.ref_name }}" + - uses: bacongobbler/azure-blob-storage-upload@v3.0.0 + with: + source_dir: _dist + container_name: ${{ secrets.AzureStorageContainerName }} + connection_string: ${{ secrets.AzureStorageConnectionString }} + extra_args: '--pattern helm-*'