mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-09 16:00:22 +00:00
ci: pushing artifacts using github actions
As Travis CI `https://travis-ci.org/` is getting
shutdown date on June 15th. Either we need to move
to new place https://www.travis-ci.com/ or we can
switch to github action to push image and the helm
charts when a PR is merged.
fixes: #1781
Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
(cherry picked from commit c70e46a77c
)
This commit is contained in:
parent
51075bc018
commit
b73e8a676c
35
.github/workflows/publish-artifacts.yaml
vendored
Normal file
35
.github/workflows/publish-artifacts.yaml
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
---
|
||||
name: publish artifacts
|
||||
# yamllint disable-line rule:truthy
|
||||
on:
|
||||
push:
|
||||
# Sequence of patterns matched against refs/heads
|
||||
branches:
|
||||
# Push events on default branch
|
||||
- devel
|
||||
# Push events to branches matching refs/heads/release-v*
|
||||
- 'release-v*'
|
||||
jobs:
|
||||
push:
|
||||
name: Publish artifacts
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Login to Quay
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
registry: quay.io
|
||||
username: ${{ secrets.QUAY_IO_USERNAME }}
|
||||
password: ${{ secrets.QUAY_IO_PASSWORD }}
|
||||
|
||||
- name: Set build environment based on Git branch name
|
||||
if: github.ref == 'refs/heads/devel'
|
||||
run: echo "BRANCH_NAME=devel" >> $GITHUB_ENV
|
||||
|
||||
- name: publish artifacts
|
||||
# podman cannot pull images with both tag and digest
|
||||
# https://github.com/containers/buildah/issues/1407
|
||||
# use docker to build images
|
||||
# yamllint disable-line rule:line-length
|
||||
run: GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} CONTAINER_CMD=docker ./deploy.sh
|
@ -96,7 +96,6 @@ pull_request_rules:
|
||||
- label!=DNM
|
||||
- "#changes-requested-reviews-by=0"
|
||||
- "#approved-reviews-by>=1"
|
||||
- "status-success=continuous-integration/travis-ci/pr"
|
||||
actions:
|
||||
merge: {}
|
||||
dismiss_reviews: {}
|
||||
@ -117,7 +116,6 @@ pull_request_rules:
|
||||
- label!=DNM
|
||||
- "#changes-requested-reviews-by=0"
|
||||
- "#approved-reviews-by>=1"
|
||||
- "status-success=continuous-integration/travis-ci/pr"
|
||||
actions:
|
||||
merge: {}
|
||||
dismiss_reviews: {}
|
||||
@ -138,7 +136,6 @@ pull_request_rules:
|
||||
- label!=DNM
|
||||
- "#changes-requested-reviews-by=0"
|
||||
- "#approved-reviews-by>=1"
|
||||
- "status-success=continuous-integration/travis-ci/pr"
|
||||
actions:
|
||||
merge: {}
|
||||
dismiss_reviews: {}
|
||||
@ -159,7 +156,6 @@ pull_request_rules:
|
||||
- label!=DNM
|
||||
- "#changes-requested-reviews-by=0"
|
||||
- "#approved-reviews-by>=1"
|
||||
- "status-success=continuous-integration/travis-ci/pr"
|
||||
actions:
|
||||
merge: {}
|
||||
dismiss_reviews: {}
|
||||
@ -181,7 +177,6 @@ pull_request_rules:
|
||||
- "#changes-requested-reviews-by=0"
|
||||
- "#approved-reviews-by>=1"
|
||||
- "status-success=multi-arch-build"
|
||||
- "status-success=continuous-integration/travis-ci/pr"
|
||||
- "status-success=ci/centos/mini-e2e-helm/k8s-1.19"
|
||||
- "status-success=ci/centos/mini-e2e-helm/k8s-1.20"
|
||||
- "status-success=ci/centos/mini-e2e/k8s-1.19"
|
||||
|
32
.travis.yml
32
.travis.yml
@ -1,32 +0,0 @@
|
||||
---
|
||||
# need for docker build
|
||||
os: linux
|
||||
dist: bionic
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- coreutils
|
||||
- ruby
|
||||
- socat
|
||||
services:
|
||||
- docker
|
||||
|
||||
language: go
|
||||
branches:
|
||||
only:
|
||||
- release-v3.3
|
||||
# Only run the deploy stage on push (not pull_request) events.
|
||||
stages:
|
||||
- name: deploy
|
||||
if: type = push
|
||||
|
||||
jobs:
|
||||
include:
|
||||
- stage: deploy
|
||||
name: push artifacts to repositories
|
||||
install:
|
||||
- export HELM_VERSION=$(source build.env ; echo ${HELM_VERSION})
|
||||
- curl -L https://git.io/get_helm.sh
|
||||
| bash -s -- -v "${HELM_VERSION}"
|
||||
script: ./deploy.sh
|
@ -2,8 +2,6 @@
|
||||
|
||||
[![Go Report
|
||||
Card](https://goreportcard.com/badge/github.com/ceph/ceph-csi)](https://goreportcard.com/report/github.com/ceph/ceph-csi)
|
||||
[![Build
|
||||
Status](https://travis-ci.org/ceph/ceph-csi.svg?branch=devel)](https://travis-ci.org/ceph/ceph-csi)
|
||||
|
||||
- [Ceph CSI](#ceph-csi)
|
||||
- [Overview](#overview)
|
||||
|
125
deploy.sh
125
deploy.sh
@ -1,43 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# shellcheck source=scripts/build_step.inc.sh
|
||||
source "$(dirname "${0}")/scripts/build_step.inc.sh"
|
||||
source "$(dirname "${0}")/build.env"
|
||||
|
||||
push_helm_charts() {
|
||||
PACKAGE=$1
|
||||
CHARTDIR=$2
|
||||
VERSION=${CSI_IMAGE_VERSION//v/} # Set version (without v prefix)
|
||||
|
||||
# update information in Chart.yaml if the branch is not devel
|
||||
if [ "$TRAVIS_BRANCH" != "devel" ]; then
|
||||
# Replace appVersion: canary and version: *-canary with the actual version
|
||||
sed -i "s/\(\s.*canary\)/ $VERSION/" "charts/ceph-csi-$PACKAGE/Chart.yaml"
|
||||
|
||||
if [[ "$VERSION" == *"canary"* ]]; then
|
||||
# Replace devel with the version branch
|
||||
sed -i "s/devel/$TRAVIS_BRANCH/" "charts/ceph-csi-$PACKAGE/Chart.yaml"
|
||||
else
|
||||
# This is not a canary release, replace devel with the tagged branch
|
||||
sed -i "s/devel/v$VERSION/" "charts/ceph-csi-$PACKAGE/templates/NOTES.txt"
|
||||
sed -i "s/devel/v$VERSION/" "charts/ceph-csi-$PACKAGE/Chart.yaml"
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir -p "$CHARTDIR/csi-charts/docs/$PACKAGE"
|
||||
cp -R "./charts/ceph-csi-$PACKAGE" "$CHARTDIR/csi-charts/docs/$PACKAGE"
|
||||
pushd "$CHARTDIR/csi-charts/docs/$PACKAGE" >/dev/null
|
||||
helm package "ceph-csi-$PACKAGE"
|
||||
popd >/dev/null
|
||||
|
||||
pushd "$CHARTDIR/csi-charts/docs" >/dev/null
|
||||
helm repo index .
|
||||
git add --all :/ && git commit -m "Update for helm charts $PACKAGE-$VERSION"
|
||||
git push https://"$GITHUB_TOKEN"@github.com/ceph/csi-charts
|
||||
popd >/dev/null
|
||||
|
||||
}
|
||||
BRANCH_NAME=${BRANCH_NAME:-""}
|
||||
GITHUB_TOKEN=${GITHUB_TOKEN:-""}
|
||||
GITHUB_USER=${GITHUB_USER:-"autobuild-bot"}
|
||||
GITHUB_EMAIL=${GITHUB_EMAIL:-"ceph-csi-bot@users.noreply.github.com"}
|
||||
|
||||
# Build and push images. Steps as below:
|
||||
# 1. get base image from ./build.env (BASE_IMAGE=ceph/ceph:v14.2)
|
||||
@ -82,41 +54,66 @@ build_push_images() {
|
||||
make push-manifest
|
||||
}
|
||||
|
||||
if [ "${TRAVIS_BRANCH}" != 'release-v3.3' ]; then
|
||||
echo "!!! Branch ${TRAVIS_BRANCH} is not a deployable branch; exiting"
|
||||
exit 0 # Exiting 0 so that this isn't marked as failing
|
||||
fi
|
||||
push_helm_charts() {
|
||||
PACKAGE=$1
|
||||
CHARTDIR=$2
|
||||
VERSION=${CSI_IMAGE_VERSION//v/} # Set version (without v prefix)
|
||||
|
||||
if [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then
|
||||
build_step "log in to quay.io as user ${QUAY_IO_USERNAME}"
|
||||
# This is a workaround to fix docker permission denied issue during manifest create in Travis CI.
|
||||
# `docker manifest create` fails due to permission denied on `/etc/docker/certs.d/quay.io`
|
||||
# (https://github.com/docker/for-linux/issues/396).
|
||||
sudo chmod o+x /etc/docker
|
||||
# update information in Chart.yaml if the branch is not devel
|
||||
if [ "${BRANCH_NAME}" != "devel" ]; then
|
||||
# Replace appVersion: canary and version: *-canary with the actual version
|
||||
sed -i "s/\(\s.*canary\)/ ${VERSION}/" "charts/ceph-csi-${PACKAGE}/Chart.yaml"
|
||||
|
||||
"${CONTAINER_CMD:-docker}" login -u "${QUAY_IO_USERNAME}" -p "${QUAY_IO_PASSWORD}" quay.io
|
||||
if [[ "${VERSION}" == *"canary"* ]]; then
|
||||
# Replace devel with the version branch
|
||||
sed -i "s/devel/${BRANCH_NAME}/" "charts/ceph-csi-${PACKAGE}/Chart.yaml"
|
||||
else
|
||||
# This is not a canary release, replace devel with the tagged branch
|
||||
sed -i "s/devel/v${VERSION}/" "charts/ceph-csi-${PACKAGE}/templates/NOTES.txt"
|
||||
sed -i "s/devel/v${VERSION}/" "charts/ceph-csi-${PACKAGE}/Chart.yaml"
|
||||
|
||||
set -xe
|
||||
fi
|
||||
fi
|
||||
|
||||
build_push_images
|
||||
|
||||
CSI_CHARTS_DIR=$(mktemp -d)
|
||||
|
||||
pushd "$CSI_CHARTS_DIR" >/dev/null
|
||||
|
||||
curl -L https://git.io/get_helm.sh | bash -s -- --version "${HELM_VERSION}"
|
||||
|
||||
build_step "cloning ceph/csi-charts repository"
|
||||
git clone https://github.com/ceph/csi-charts
|
||||
|
||||
mkdir -p csi-charts/docs
|
||||
mkdir -p "${CHARTDIR}/csi-charts/docs/${PACKAGE}"
|
||||
cp -R "./charts/ceph-csi-${PACKAGE}" "${CHARTDIR}/csi-charts/docs/${PACKAGE}"
|
||||
pushd "${CHARTDIR}/csi-charts/docs/${PACKAGE}" >/dev/null
|
||||
helm package "ceph-csi-${PACKAGE}"
|
||||
popd >/dev/null
|
||||
|
||||
build_step "pushing RBD helm charts"
|
||||
push_helm_charts rbd "$CSI_CHARTS_DIR"
|
||||
build_step "pushing CephFS helm charts"
|
||||
push_helm_charts cephfs "$CSI_CHARTS_DIR"
|
||||
build_step_log "finished deployment!"
|
||||
pushd "${CHARTDIR}/csi-charts/docs" >/dev/null
|
||||
helm repo index .
|
||||
git config user.name "${GITHUB_USER}"
|
||||
git config user.email "${GITHUB_EMAIL}"
|
||||
git add --all :/ && git commit -m "Update for helm charts ${PACKAGE}-${VERSION}"
|
||||
git push https://"${GITHUB_TOKEN}"@github.com/ceph/csi-charts
|
||||
popd >/dev/null
|
||||
|
||||
[ -n "${CSI_CHARTS_DIR}" ] && rm -rf "${CSI_CHARTS_DIR}"
|
||||
}
|
||||
|
||||
if [[ -z "${GITHUB_TOKEN}" ]]; then
|
||||
echo "GITHUB_TOKEN is unset or set to the empty string"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
build_push_images
|
||||
|
||||
CSI_CHARTS_DIR=$(mktemp -d)
|
||||
|
||||
pushd "${CSI_CHARTS_DIR}" >/dev/null
|
||||
|
||||
curl -L https://git.io/get_helm.sh | bash -s -- --version "${HELM_VERSION}"
|
||||
|
||||
build_step "cloning ceph/csi-charts repository"
|
||||
git clone https://github.com/ceph/csi-charts
|
||||
|
||||
mkdir -p csi-charts/docs
|
||||
popd >/dev/null
|
||||
|
||||
build_step "pushing RBD helm charts"
|
||||
push_helm_charts rbd "${CSI_CHARTS_DIR}"
|
||||
build_step "pushing CephFS helm charts"
|
||||
push_helm_charts cephfs "${CSI_CHARTS_DIR}"
|
||||
build_step_log "finished deployment!"
|
||||
|
||||
[ -n "${CSI_CHARTS_DIR}" ] && rm -rf "${CSI_CHARTS_DIR}"
|
||||
|
@ -4,7 +4,7 @@
|
||||
- [Introduction](#introduction)
|
||||
- [Versioning](#versioning)
|
||||
- [Tagging repositories](#tagging-repositories)
|
||||
- [Release process](#release-process-tbd)
|
||||
- [Release process [TBD]](#release-process-tbd)
|
||||
|
||||
## Introduction
|
||||
|
||||
@ -47,8 +47,8 @@ and it must be backward compatible.
|
||||
|
||||
The tag name must begin with "v" followed by the version number, conforming to
|
||||
the [versioning](#versioning) requirements (e.g. a tag of `v1.0.0-rc2` for
|
||||
version `1.0.0-rc2`). This tag format is used by the Travis CI infrastructure to
|
||||
properly upload and tag releases to Quay and Docker Hub.
|
||||
version `1.0.0-rc2`). This tag format is used by the GitHub action
|
||||
infrastructure to properly upload and tag releases to Quay.
|
||||
|
||||
## Release process [TBD]
|
||||
|
||||
@ -74,4 +74,3 @@ of each release:
|
||||
2.1.0) can be linked to issues and PRs for better tracking release items.
|
||||
|
||||
- Once all steps are complete, close the issue and the milestone.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# This script will be used by travis to run functional test
|
||||
# This script will be used by centos CI to run functional test
|
||||
# against different Kubernetes version
|
||||
export KUBE_VERSION=$1
|
||||
shift
|
||||
@ -15,7 +15,7 @@ kube_version() {
|
||||
# configure global environment variables
|
||||
# shellcheck source=build.env
|
||||
source "$(dirname "${0}")/../build.env"
|
||||
cat << EOF | sudo tee -a /etc/environment
|
||||
cat <<EOF | sudo tee -a /etc/environment
|
||||
MINIKUBE_VERSION=${MINIKUBE_VERSION}
|
||||
VM_DRIVER=${VM_DRIVER}
|
||||
CHANGE_MINIKUBE_NONE_USER=${CHANGE_MINIKUBE_NONE_USER}
|
||||
@ -27,7 +27,6 @@ sudo scripts/minikube.sh create-block-pool
|
||||
# pull docker images to speed up e2e
|
||||
sudo scripts/minikube.sh cephcsi
|
||||
sudo scripts/minikube.sh k8s-sidecar
|
||||
sudo chown -R travis: "$HOME"/.minikube /usr/local/bin/kubectl
|
||||
KUBE_MAJOR=$(kube_version 1)
|
||||
KUBE_MINOR=$(kube_version 2)
|
||||
# skip snapshot operation if kube version is less than 1.17.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# This script will be used by travis to run functional test
|
||||
# This script will be used by centos CI to run functional test
|
||||
# against different Kubernetes version
|
||||
export KUBE_VERSION=$1
|
||||
shift
|
||||
@ -15,7 +15,7 @@ kube_version() {
|
||||
# configure global environment variables
|
||||
# shellcheck source=build.env
|
||||
source "$(dirname "${0}")/../build.env"
|
||||
cat << EOF | sudo tee -a /etc/environment
|
||||
cat <<EOF | sudo tee -a /etc/environment
|
||||
HELM_VERSION=${HELM_VERSION}
|
||||
MINIKUBE_VERSION=${MINIKUBE_VERSION}
|
||||
VM_DRIVER=${VM_DRIVER}
|
||||
@ -31,7 +31,6 @@ sudo scripts/minikube.sh create-block-pool
|
||||
# pull docker images to speed up e2e
|
||||
sudo scripts/minikube.sh cephcsi
|
||||
sudo scripts/minikube.sh k8s-sidecar
|
||||
sudo chown -R travis: "$HOME"/.minikube /usr/local/bin/kubectl
|
||||
|
||||
NAMESPACE=cephcsi-e2e-$RANDOM
|
||||
# create ns for e2e
|
||||
|
Loading…
Reference in New Issue
Block a user