diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4049a1455..dc68e04bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,97 +3,88 @@ name: CI on: pull_request: branches: - - '*' + - "*" push: branches: - master jobs: - build: name: Build runs-on: ubuntu-latest steps: + - name: Set up Go 1.14 + uses: actions/setup-go@v1 + with: + go-version: 1.14 + id: go - - name: Set up Go 1.14 - uses: actions/setup-go@v1 - with: - go-version: 1.14 - id: go - - - name: Check out code into the Go module directory - uses: actions/checkout@v1 + - uses: actions/checkout@v1 - - name: Set up Docker Buildx - id: buildx - uses: crazy-max/ghaction-docker-buildx@v1 - with: - buildx-version: latest - qemu-version: latest + - name: Set up Docker Buildx + id: buildx + uses: crazy-max/ghaction-docker-buildx@v1 + with: + buildx-version: latest + qemu-version: latest - - name: Available platforms - run: echo ${{ steps.buildx.outputs.platforms }} + - name: Available platforms + run: echo ${{ steps.buildx.outputs.platforms }} - - name: Prepare Host - run: | - sudo apt-get -qq update || true - sudo apt-get install -y bzr - # install yq - curl -fsSL -o yq https://github.com/mikefarah/yq/releases/download/3.3.0/yq_linux_amd64 - chmod +x yq - sudo mv yq /usr/local/bin/yq - # install kubectl - curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/linux/amd64/kubectl - chmod +x ./kubectl - sudo mv ./kubectl /usr/local/bin/kubectl + - name: Prepare Host + run: | + sudo apt-get -qq update || true + sudo apt-get install -y bzr + # install yq + curl -fsSL -o yq https://github.com/mikefarah/yq/releases/download/3.3.0/yq_linux_amd64 + chmod +x yq + sudo mv yq /usr/local/bin/yq + # install kubectl + curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/linux/amd64/kubectl + chmod +x ./kubectl + sudo mv ./kubectl /usr/local/bin/kubectl - - name: Run checks - run: | - make ci + - name: Run checks + run: | + make ci - - name: Build - env: - REGISTRY: appscodeci - DOCKER_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} - USERNAME: 1gtm - run: | - docker login --username ${USERNAME} --password ${DOCKER_TOKEN} - make push + - name: Build + env: + REGISTRY: appscodeci + DOCKER_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + USERNAME: 1gtm + run: | + docker login --username ${USERNAME} --password ${DOCKER_TOKEN} + make push - - name: Create Kubernetes cluster - id: kind - uses: engineerd/setup-kind@v0.1.0 - with: - version: v0.7.0 - config: hack/kubernetes/kind.yaml + - name: Create Kubernetes cluster + id: kind + uses: engineerd/setup-kind@v0.3.0 + with: + version: v0.8.1 + config: hack/kubernetes/kind.yaml - - name: Prepare cluster for testing - id: local-path - env: - DOCKER_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} - USERNAME: 1gtm - REGISTRY_SECRET: regcred - run: | - echo "waiting for nodes to be ready ..." - kubectl wait --for=condition=Ready nodes --all --timeout=5m - kubectl get nodes - echo - echo "installing local-path provisioner ..." - kubectl delete storageclass --all - kubectl apply -f https://github.com/rancher/local-path-provisioner/raw/v0.0.12/deploy/local-path-storage.yaml - kubectl wait --for=condition=Ready pods -n local-path-storage --all --timeout=5m - kubectl apply -f hack/kubernetes/storageclass/standard.yaml - echo - echo "create docker-registry secret" - kubectl create secret docker-registry ${REGISTRY_SECRET} --namespace=kube-system --docker-server=https://index.docker.io/v1/ --docker-username=${USERNAME} --docker-password=${DOCKER_TOKEN} + - name: Prepare cluster for testing + id: local-path + env: + DOCKER_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + USERNAME: 1gtm + REGISTRY_SECRET: regcred + run: | + echo "waiting for nodes to be ready ..." + kubectl wait --for=condition=Ready nodes --all --timeout=5m + kubectl get nodes + echo + echo "create docker-registry secret" + kubectl create secret docker-registry ${REGISTRY_SECRET} --namespace=kube-system --docker-server=https://index.docker.io/v1/ --docker-username=${USERNAME} --docker-password=${DOCKER_TOKEN} - - name: Install CRDs - run: | - kubectl apply -f https://github.com/stashed/apimachinery/raw/master/api/crds/stash.appscode.com_functions.yaml - kubectl apply -f https://github.com/stashed/apimachinery/raw/master/api/crds/stash.appscode.com_tasks.yaml - kubectl wait --for=condition=NamesAccepted crds --all --timeout=5m + - name: Install CRDs + run: | + kubectl apply -f https://github.com/stashed/apimachinery/raw/master/crds/stash.appscode.com_functions.yaml + kubectl apply -f https://github.com/stashed/apimachinery/raw/master/crds/stash.appscode.com_tasks.yaml + kubectl wait --for=condition=NamesAccepted crds --all --timeout=5m - - name: Test charts - run: | - export KUBECONFIG=$HOME/.kube/config - make ct + - name: Test charts + run: | + export KUBECONFIG=$HOME/.kube/config + make ct diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b06f7d4b3..6aca18c4e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,39 +3,110 @@ name: Release on: push: tags: - - '*.*' - - '*.*.*' + - "*.*" jobs: - build: name: Build runs-on: ubuntu-latest + defaults: + run: + shell: bash steps: + - name: Check out code into the Go module directory + uses: actions/checkout@v1 + + - name: Parse Parameters + id: params + run: | + GIT_TAG=${GITHUB_REF#'refs/tags/'} + echo ::set-output name=git_tag::$GIT_TAG + while IFS=$': \t' read -r marker v; do + case $marker in + Release) + echo ::set-output name=release::$v + ;; + Release-tracker) + echo ::set-output name=release_tracker::$v + ;; + esac + done < <(git tag -l --format='%(body)' $GIT_TAG) + + - name: Install GitHub CLI + run: | + curl -fsSL https://github.com/github/hub/raw/master/script/get | bash -s 2.14.1 + sudo mv bin/hub /usr/local/bin + + - name: Print version info + id: semver + run: | + make version + + - name: Set up Docker Buildx + id: buildx + uses: crazy-max/ghaction-docker-buildx@v1 + with: + buildx-version: latest + qemu-version: latest + + - name: Available platforms + run: echo ${{ steps.buildx.outputs.platforms }} + + - name: Build + env: + DOCKER_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + USERNAME: 1gtm + APPSCODE_ENV: prod + run: | + docker login --username ${USERNAME} --password ${DOCKER_TOKEN} + make release + + - name: Clone charts repository + env: + GITHUB_TOKEN: ${{ secrets.LGTM_GITHUB_TOKEN }} + run: | + cd $HOME + git clone https://1gtm:${GITHUB_TOKEN}@github.com/appscode/charts.git + cd charts + git config user.name "1gtm" + git config user.email "1gtm@appscode.com" + + - name: Package + run: | + echo "install helm 3" + curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash + echo "package charts" + find charts -maxdepth 1 -mindepth 1 -type d -exec helm package {} -d {} \; + helm repo index --merge $HOME/charts/stable/index.yaml --url https://charts.appscode.com/stable/ charts + mv charts/index.yaml $HOME/charts/stable/index.yaml + cd charts + find . -maxdepth 1 -mindepth 1 -type d -exec mkdir -p $HOME/charts/stable/{} \; + find . -path ./charts -prune -o -name '*.tgz' -exec mv {} $HOME/charts/stable/{} \; - - name: Check out code into the Go module directory - uses: actions/checkout@v1 - - - name: Print version info - id: semver - run: | - make version - - - name: Set up Docker Buildx - id: buildx - uses: crazy-max/ghaction-docker-buildx@v1 - with: - buildx-version: latest - qemu-version: latest - - - name: Available platforms - run: echo ${{ steps.buildx.outputs.platforms }} - - - name: Build - env: - DOCKER_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} - USERNAME: 1gtm - APPSCODE_ENV: prod - run: | - docker login --username ${USERNAME} --password ${DOCKER_TOKEN} - make release + - name: Create pull request + env: + GITHUB_TOKEN: ${{ secrets.LGTM_GITHUB_TOKEN }} + run: | + pr_branch=${GITHUB_REPOSITORY}/${GITHUB_RUN_ID} + cd $HOME/charts + git checkout -b $pr_branch + git add --all + ct_cmd="git commit -a -s -m \"Publish $GITHUB_REPOSITORY@${{ steps.params.outputs.git_tag }} charts\"" + pr_cmd=$(cat <\"" + eval "$ct_cmd" + git push -u origin HEAD -f + eval "$pr_cmd"