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: Install Deps id: install-deps run: sudo apt-get -y install libpcsclite-dev - 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'