smallstep-certificates/.github/workflows/release.yml
2021-02-18 12:38:32 -08:00

248 lines
11 KiB
YAML

name: Create Release & Upload Assets
on:
push:
# Sequence of patterns matched against refs/tags
tags:
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
jobs:
lintTestBuild:
name: Lint, Test, Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Go
uses: actions/setup-go@v2
with:
go-version: '^1.15.6'
- name: Lint, Test, Build
id: lintTestBuild
run: V=1 make -j1 bootstrap travis
create_release:
name: Create Release
runs-on: ubuntu-latest
needs: lintTestBuild
outputs:
version: ${{ steps.extract-tag.outputs.VERSION }}
vversion: ${{ steps.extract-tag.outputs.VVERSION }}
upload_url: ${{ steps.create_release.outputs.upload_url }}
is_prerelease: ${{ steps.is_prerelease.outputs.IS_PRERELEASE }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Extract Tag Names
id: extract-tag
run: |
VVERSION=${GITHUB_REF#refs/tags/}
VERSION=${GITHUB_REF#refs/tags/v}
echo "::set-output name=VVERSION::${VVERSION}"
echo "::set-output name=VERSION::${VERSION}"
- name: Is Pre-release
id: is_prerelease
run: |
set +e
echo ${{ github.ref }} | grep "\-rc.*"
OUT=$?
if [ $OUT -eq 0 ]; then IS_PRERELEASE=true; else IS_PRERELEASE=false; fi
echo "::set-output name=IS_PRERELEASE::${IS_PRERELEASE}"
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: ${{ steps.is_prerelease.outputs.IS_PRERELEASE }}
build_upload_github_assets:
name: Build & Upload Mac OS | Linux | Windows Assets To Github Release
runs-on: ubuntu-latest
needs: create_release
steps:
-
name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
-
name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.16
-
name: Run GoReleaser
uses: goreleaser/goreleaser-action@56f5b77f7fa4a8fe068bf22b732ec036cc9bc13f # v2.4.1
with:
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.PAT }}
# build_upload_docker:
# name: Build & Upload Docker Images
# runs-on: ubuntu-latest
# needs: create_release
# if: needs.create_release.outputs.is_prerelease == 'false'
# steps:
# - name: Checkout
# uses: actions/checkout@v2
# - name: Setup Go
# uses: actions/setup-go@v2
# with:
# go-version: '^1.15.6'
# - name: Build
# id: build
# run: |
# PATH=$PATH:/usr/local/go/bin:/home/admin/go/bin
# make docker-artifacts
# env:
# DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
# DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
#
# build_upload_aws_s3_binaries:
# name: Build & Upload AWS S3 Binaries
# runs-on: ubuntu-latest
# needs: create_release
# if: needs.create_release.outputs.is_prerelease == 'false'
# steps:
# - name: Checkout
# uses: actions/checkout@v2
# - name: Setup Go
# uses: actions/setup-go@v2
# with:
# go-version: '^1.15.6'
# - name: Build
# id: build
# run: |
# PATH=$PATH:/usr/local/go/bin:/home/admin/go/bin
# make -j1 binary-linux binary-darwin binary-windows
# mkdir -p ./.releases
# cp ./output/binary/linux/bin/step ./.releases/step-linux-${{ needs.create_release.outputs.version }}
# cp ./output/binary/linux/bin/step ./.releases/step-linux-latest-integration
# cp ./output/binary/darwin/bin/step ./.releases/step-darwin-${{ needs.create_release.outputs.version }}
# cp ./output/binary/windows/bin/step ./.releases/step-windows-${{ needs.create_release.outputs.version }}.exe
# - name: Upload s3
# id: upload-s3
# uses: jakejarvis/s3-sync-action@v0.5.1
# with:
# args: --acl public-read --follow-symlinks
# env:
# AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# AWS_REGION: us-east-1
# SOURCE_DIR: ./.releases
#
# upload_windows_installer:
# name: Upload Windows Installer
# runs-on: ubuntu-latest
# needs: create_release
# if: needs.create_release.outputs.is_prerelease == 'false'
# steps:
# - name: Checkout
# uses: actions/checkout@v2
# - name: Download Existing Installer
# id: download
# uses: prewk/s3-cp-action@v0.1.1
# env:
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# AWS_REGION: us-east-1
# SOURCE: s3://${{ secrets.AWS_s3_BUCKET }}/install-step.ps1
# DEST: ./install-step.ps1
# - name: Modify Installer
# id: modify
# run: sed -i -e "s~step-windows-.*.exe~step-windows-foo.exe~g" ./install-step.ps1
# - name: Upload and Overwrite
# id: upload
# uses: prewk/s3-cp-action@v0.1.1
# with:
# args: --acl public-read --follow-symlinks
# env:
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# AWS_REGION: us-east-1
# DEST: s3://${{ secrets.AWS_s3_BUCKET }}/install-step.ps1
# SOURCE: ./install-step.ps1
#
# update_arch:
# name: Update Arch Linux Packager
# runs-on: ubuntu-latest
# needs: [create_release, build_upload_github_assets]
# if: needs.create_release.outputs.is_prerelease == 'false'
# steps:
# - name: Checkout
# uses: actions/checkout@v2
# - name: Calculate New SHAs
# id: calculate-shas
# run: |
# PKG=step-cli-bin
# VVER=${{ needs.create_release.outputs.vversion }}
# VER=${{ needs.create_release.outputs.version }}
# ARM64_URL="https://github.com/smallstep/cli/releases/download/${VVER}/step_linux_${VER}_arm64.tar.gz"
# AMD64_URL="https://github.com/smallstep/cli/releases/download/${VVER}/step_linux_${VER}_amd64.tar.gz"
# # Get arm64 SHA for step-cli
# curl -o "${PKG}-arm64.tar.gz" -J -L -s --show-error -f "${ARM64_URL}"
# ARM64_SHA="$(shasum -a 256 "${PKG}-arm64.tar.gz" | awk '{printf $1}')"
# # Get amd64 SHA for step-cli
# curl -o "${PKG}-amd64.tar.gz" -J -L -s --show-error -f "${AMD64_URL}"
# AMD64_SHA="$(shasum -a 256 "${PKG}-amd64.tar.gz" | awk '{printf $1}')"
# # Clone arch linux step-cli-bin repo
# echo "${{ secrets.ARCH_SSH_KEY }}" > /tmp/ssh_arch_key && chmod 0400 /tmp/ssh_arch_key
# ssh-agent bash -c 'ssh-add /tmp/ssh_arch_key; GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone ssh://aur@aur.archlinux.org/step-cli-bin.git'
# cd step-cli-bin
# # Modify values in files
# sed -i -e "s/^pkgver=.*/pkgver=${VER}/" "./PKGBUILD"
# sed -i -e "s/^sha256sums_aarch64=.*/sha256sums_aarch64=(\"${ARM64_SHA}\")/" "./PKGBUILD"
# sed -i -e "s/^sha256sums_x86_64=.*/sha256sums_x86_64=(\"${AMD64_SHA}\")/" "./PKGBUILD"
# - name: Makepkg Build and Check
# id: makepkg
# uses: smallstep/pkgbuild-action@v1.0.2
# with:
# pkgdir: ./step-cli-bin
# - name: Update ARCH Repo
# id: update
# run: |
# # Git commit and push
# cd ./step-cli-bin
# git add "./PKGBUILD" "./.SRCINFO"
# git commit -m "Update to ${{ needs.create_release.outputs.vversion }}"
# ssh-agent bash -c 'ssh-add /tmp/ssh_arch_key; GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git push origin HEAD:master'
#
# update_reference_docs:
# name: Update Reference Docs
# runs-on: ubuntu-latest
# needs: create_release
# if: needs.create_release.outputs.is_prerelease == 'false'
# steps:
# - name: Checkout
# uses: actions/checkout@v2
# - name: Setup Go
# uses: actions/setup-go@v2
# with:
# go-version: '^1.15.6'
# - name: Build
# id: build
# run: make build
# - name: Checkout Docs
# uses: actions/checkout@master
# with:
# repository: smallstep/docs
# token: ${{ secrets.PAT }}
# path: './docs'
# - name: Update Reference
# id: update_refrence
# run: ./bin/step help --markdown ./docs/step-cli/reference
# - name: Push changes
# uses: ad-m/github-push-action@v0.6.0
# with:
# github_token: ${{ secrets.PAT }}
# branch: 'master'
# directory: './docs'
# repository: 'smallstep/docs'