fix: do not store output in test suite execution result (#4409) (#4422) #715
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release kubectl-testkube | |
on: | |
push: | |
tags: | |
- "v[0-9]+.[0-9]+.[0-9]+" | |
permissions: | |
id-token: write # needed for keyless signing | |
contents: write | |
env: | |
TESTKUBE_CHOCO_REPO: https://chocolatey.kubeshop.io/ | |
ALPINE_IMAGE: alpine:3.18.0 | |
jobs: | |
pre_build: | |
name: Pre-build | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
include: | |
- name: "linux" | |
path: .builds-linux.goreleaser.yml | |
- name: "windows" | |
path: .builds-windows.goreleaser.yml | |
- name: "darwin" | |
path: .builds-darwin.goreleaser.yml | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set up QEMU | |
if: matrix.name == 'linux' | |
uses: docker/setup-qemu-action@v1 | |
- name: Set up Docker Buildx | |
if: matrix.name == 'linux' | |
id: buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Set up Go | |
uses: actions/setup-go@v2 | |
with: | |
go-version: 1.21 | |
- name: Go Cache | |
uses: actions/cache@v2 | |
with: | |
path: | | |
~/go/pkg/mod | |
~/.cache/go-build | |
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go- | |
- name: Login to DockerHub | |
if: matrix.name == 'linux' | |
uses: docker/login-action@v1 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Get github sha | |
id: github_sha | |
run: echo "::set-output name=sha_short::${GITHUB_SHA::7}" | |
- name: Run GoReleaser | |
uses: goreleaser/goreleaser-action@v2 | |
with: | |
distribution: goreleaser-pro | |
version: latest | |
args: release -f ${{ matrix.path }} --skip-publish | |
env: | |
GITHUB_TOKEN: ${{ secrets.CI_BOT_TOKEN }} | |
ANALYTICS_TRACKING_ID: "${{secrets.TESTKUBE_CLI_GA_MEASUREMENT_ID}}" | |
ANALYTICS_API_KEY: "${{secrets.TESTKUBE_CLI_GA_MEASUREMENT_SECRET}}" | |
# Your GoReleaser Pro key, if you are using the 'goreleaser-pro' distribution | |
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} | |
DOCKER_BUILDX_BUILDER: "${{ steps.buildx.outputs.name }}" | |
DOCKER_BUILDX_CACHE_FROM: "type=gha" | |
DOCKER_BUILDX_CACHE_TO: "type=gha,mode=max" | |
ALPINE_IMAGE: ${{ env.ALPINE_IMAGE }} | |
DOCKER_IMAGE_TAG: ${{ steps.github_sha.outputs.sha_short }} | |
- name: Push Docker images | |
if: matrix.name == 'linux' | |
run: | | |
docker push kubeshop/testkube-cli:${{ steps.github_sha.outputs.sha_short }}-arm64v8 | |
docker push kubeshop/testkube-cli:${{ steps.github_sha.outputs.sha_short }}-amd64 | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@master | |
with: | |
name: testkube_${{ matrix.name }} | |
path: | | |
${{ matrix.name }}/testkube_${{ matrix.name }}_* | |
retention-days: 1 | |
release: | |
name: Create and upload release-artifacts | |
needs: pre_build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- uses: sigstore/[email protected] | |
- uses: anchore/sbom-action/[email protected] | |
- name: Download Artifacts for Linux | |
uses: actions/download-artifact@master | |
with: | |
name: testkube_linux | |
path: linux | |
- name: Download Artifacts for Windows | |
uses: actions/download-artifact@master | |
with: | |
name: testkube_windows | |
path: windows | |
- name: Download Artifacts for Darwin | |
uses: actions/download-artifact@master | |
with: | |
name: testkube_darwin | |
path: darwin | |
# Added as a workaround since files lose their permissions when being moved from one stage to another in GH. A bug was reported | |
# and will be fixed in the next release of GoReleaser, thus we will be able to remove this code. | |
- name: Add executable mode | |
run: chmod -R +x linux/ darwin/ | |
- name: Set up Go | |
uses: actions/setup-go@v2 | |
with: | |
go-version: 1.21 | |
- name: Go Cache | |
uses: actions/cache@v2 | |
with: | |
path: | | |
~/go/pkg/mod | |
~/.cache/go-build | |
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go- | |
- name: Run GoReleaser | |
uses: goreleaser/goreleaser-action@v2 | |
with: | |
distribution: goreleaser-pro | |
version: latest | |
args: release -f .goreleaser.yml | |
env: | |
GITHUB_TOKEN: ${{ secrets.CI_BOT_TOKEN }} | |
ANALYTICS_TRACKING_ID: "${{secrets.TESTKUBE_CLI_GA_MEASUREMENT_ID}}" | |
ANALYTICS_API_KEY: "${{secrets.TESTKUBE_CLI_GA_MEASUREMENT_SECRET}}" | |
SLACK_BOT_CLIENT_ID: "${{secrets.TESTKUBE_SLACK_BOT_CLIENT_ID}}" | |
SLACK_BOT_CLIENT_SECRET: "${{secrets.TESTKUBE_SLACK_BOT_CLIENT_SECRET}}" | |
# Your GoReleaser Pro key, if you are using the 'goreleaser-pro' distribution | |
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} | |
- name: Store Intermediate Artifacts | |
uses: actions/upload-artifact@master | |
with: | |
name: bin-artifacts | |
path: dist | |
retention-days: 1 | |
# - name: Setup git email | |
# run: git config --global user.email "[email protected]" | |
# - name: Setup git name | |
# run: git config --global user.name "Brew Bot" | |
# - name: Bump formulae | |
# uses: mislav/bump-homebrew-formula-action@v2 | |
# with: | |
# formula-name: testkube | |
# env: | |
# COMMITTER_TOKEN: ${{ secrets.CI_BOT_TOKEN }} | |
build-and-publish-windows-installer: | |
needs: release | |
runs-on: windows-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Get Intermediate Artifacts | |
uses: actions/download-artifact@master | |
with: | |
name: testkube_windows | |
path: windows | |
- name: Get MSFT Cert | |
id: write_file | |
uses: timheuer/[email protected] | |
with: | |
fileName: "kubeshop_msft.p12" | |
fileDir: "./temp/" | |
encodedString: ${{ secrets.CERT_MSFT_KUBESHOP_P12_B64 }} | |
- name: Create and Sign MSI | |
run: | | |
Copy-Item 'windows\testkube_windows_386\kubectl-testkube.exe' '.\kubectl-testkube.exe' | |
Copy-Item 'build\installer\windows\testkube.wxs' '.\testkube.wxs' | |
Copy-Item 'build\installer\windows\tk.bat' '.\tk.bat' | |
Copy-Item 'build\installer\windows\testkube.bat' '.\testkube.bat' | |
& "$env:WIX\bin\candle.exe" *.wxs | |
& "$env:WIX\bin\light.exe" *.wixobj | |
& "C:\Program Files (x86)\Microsoft SDKs\ClickOnce\SignTool\signtool.exe" sign /f "$env:P12_CERT" /p "$env:P12_PASSWORD" /d "Kubetest by Kubeshop" /tr http://timestamp.digicert.com testkube.msi | |
env: | |
P12_CERT: ${{ steps.write_file.outputs.filePath }} | |
P12_PASSWORD: ${{ secrets.CERT_MSFT_KUBESHOP_P12_PASSWORD }} | |
- name: Get tag | |
id: tag | |
uses: dawidd6/action-get-tag@v1 | |
with: | |
# Optionally strip `v` prefix | |
strip_v: true | |
- name: Get release | |
id: get_release | |
uses: bruceadams/[email protected] | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
- name: Calculate Checksum | |
id: checksum | |
run: | | |
$installer_name = $env:MSI_NAME | |
$hash=Get-FileHash testkube.msi | |
$hash.Hash + " " + $installer_name + ".msi" >> msi_checksum.txt | |
echo "::set-output name=INSTALLER_NAME::${installer_name}" | |
#export MSI hash to environment | |
$hashsum = $hash.Hash | |
echo "::set-output name=CHECKSUM::${hashsum}" | |
#copy MSI to choco directory to build a nuget package | |
Copy-Item -Path "testkube.msi" -Destination ".\choco\tools\$env:MSI_NAME.msi" | |
env: | |
MSI_NAME: testkube_${{steps.tag.outputs.tag}}_Windows_i386 | |
- name: Upload release binary | |
uses: actions/[email protected] | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
with: | |
upload_url: ${{ steps.get_release.outputs.upload_url }} | |
asset_path: testkube.msi | |
asset_name: ${{steps.checksum.outputs.INSTALLER_NAME}}.msi | |
asset_content_type: application/octet-stream | |
- name: Upload Checksum | |
uses: actions/[email protected] | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
with: | |
upload_url: ${{ steps.get_release.outputs.upload_url }} | |
asset_path: msi_checksum.txt | |
asset_name: ${{steps.checksum.outputs.INSTALLER_NAME}}_checksum.txt | |
asset_content_type: text/plain | |
- name: Update checksum in chocolateyInstall.ps1 file | |
working-directory: ./choco | |
run: | | |
$file_content = Get-Content .\tools\chocolateyInstall.ps1 -Raw | |
$update_version = $file_content -replace "(?i)(\schecksum\s*=\s*)('.*')", "`$1'${{steps.checksum.outputs.CHECKSUM}}'" | |
Set-Content -Path .\tools\chocolateyInstall.ps1 -Value $update_version -NoNewline | |
- name: Bump versions and push package to chocolatey repo | |
working-directory: ./choco | |
run: | | |
./update.ps1 ${{steps.tag.outputs.tag}} ${{ secrets.COMMOM_CHOCO_API_KEY }} ${{ env.TESTKUBE_CHOCO_REPO }} | |
build-and-publish-linux-installer: | |
needs: release | |
runs-on: ubuntu-latest | |
steps: | |
- name: Get Intermediate Artifacts | |
uses: actions/download-artifact@master | |
with: | |
name: bin-artifacts | |
path: dist | |
- name: Get tag | |
id: tag | |
uses: dawidd6/action-get-tag@v1 | |
with: | |
strip_v: true | |
- name: Publish package | |
env: | |
USERNAME: "aptly" | |
PASSWORD: ${{ secrets.APTLY_PASSWORD }} | |
APTLY_URL: "repo.testkube.io:8080" | |
VERSION: ${{steps.tag.outputs.tag}} | |
run: | | |
### Upload files | |
curl --fail-with-body -u ${USERNAME}:${PASSWORD} -X POST -F file=@dist/testkube_${VERSION}_linux_386.deb http://${APTLY_URL}/api/files/testkube | |
curl --fail-with-body -u ${USERNAME}:${PASSWORD} -X POST -F file=@dist/testkube_${VERSION}_linux_arm64.deb http://${APTLY_URL}/api/files/testkube | |
curl --fail-with-body -u ${USERNAME}:${PASSWORD} -X POST -F file=@dist/testkube_${VERSION}_linux_amd64.deb http://${APTLY_URL}/api/files/testkube | |
### Add file to repo | |
curl --fail-with-body -u ${USERNAME}:${PASSWORD} -X POST http://${APTLY_URL}/api/repos/testkube/file/testkube?forceReplace=1 | |
### Create snapshot | |
curl --fail-with-body -u ${USERNAME}:${PASSWORD} -X POST -H 'Content-Type: application/json' --data '{"Name":"testkube-'${VERSION}'"}' http://${APTLY_URL}/api/repos/testkube/snapshots | |
### Publish repo | |
curl --fail-with-body -u ${USERNAME}:${PASSWORD} -X PUT -H 'Content-Type: application/json' --data '{"Snapshots": [{"Component": "main", "Name": "testkube-'${VERSION}'"}]}'}], http://repo.testkube.io:8080/api/publish/:linux/linux | |
trigger-argocd-image-build: | |
needs: release | |
runs-on: ubuntu-latest | |
steps: | |
- name: Release tag | |
id: release_tag | |
run: | | |
echo ::set-output name=SOURCE_TAG::${GITHUB_REF#refs/tags/} | |
- name: Set env | |
env: | |
SOURCE_TAG: ${{ steps.release_tag.outputs.SOURCE_TAG }} | |
run: | | |
echo RELEASE_TAG=${SOURCE_TAG:1} >> $GITHUB_ENV | |
- name: Repository Dispatch | |
uses: peter-evans/repository-dispatch@v2 | |
with: | |
token: ${{ secrets.CI_BOT_TOKEN }} | |
repository: kubeshop/testkube-argocd | |
event-type: trigger-argocd-image-build | |
client-payload: '{"release_version": "${{ env.RELEASE_TAG }}"}' |