fix(ci): opreator binary should not be prefixed with v (#1060) #178
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 | |
on: | |
push: | |
tags: | |
- '[0-9]+\.[0-9]+\.[0-9]+\+k8s-[0-9]+\.[0-9]+' | |
- '[0-9]+\.[0-9]+\.[0-9]+\+k8s-[0-9]+\.[0-9]+-.+' | |
permissions: | |
contents: write | |
jobs: | |
get-tag: | |
runs-on: ubuntu-latest | |
outputs: | |
tag-name: ${{ steps.get-tag.outputs.tag-name }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Extract tag name | |
id: get-tag | |
run: | | |
# remove the "refs/tags/" prefix to get the tag that was pushed | |
export RAW_TAG=${{ github.ref_name }} | |
# add a 'v' prefix to the tag if it doesn't already have one | |
export V_TAG=$(echo "$RAW_TAG" | sed 's/^[^v]/v&/') | |
# store the tag name in an output for later steps | |
echo "tag-name=${V_TAG}" >> $GITHUB_OUTPUT | |
buildtools: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: go.mod | |
- name: Compile buildtools | |
run: | | |
make buildtools | |
- name: Upload buildtools artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: buildtools | |
path: output/bin/buildtools | |
publish-operator-image: | |
runs-on: ubuntu-latest | |
needs: [get-tag] | |
outputs: | |
image: ${{ steps.operator-image.outputs.image }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Cache Melange | |
uses: actions/cache@v4 | |
with: | |
path: | | |
build/.melange-cache | |
key: melange-cache | |
- name: Setup Melange | |
uses: chainguard-dev/actions/setup-melange@main | |
- name: Build and push operator image | |
id: operator-image | |
env: | |
REGISTRY: docker.io | |
USERNAME: ${{ secrets.DOCKERHUB_USER }} | |
PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} | |
run: | | |
make -C operator apko apko-login build-and-push-operator-image \ | |
PACKAGE_VERSION=${{ needs.get-tag.outputs.tag-name }} | |
echo "image=$(cat operator/build/image)" >> $GITHUB_OUTPUT | |
publish-operator-chart: | |
runs-on: ubuntu-latest | |
needs: [get-tag, publish-operator-image] | |
outputs: | |
chart: ${{ steps.operator-chart.outputs.chart }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Build and push operator chart | |
id: operator-chart | |
env: | |
HELM_USER: ${{secrets.REPLICATED_LIBRARY_SERVICE_ACCOUNT}} | |
HELM_PASS: ${{secrets.REPLICATED_LIBRARY_SERVICE_ACCOUNT}} | |
HELM_REGISTRY: registry.replicated.com | |
run: | | |
make -C operator build-chart \ | |
PACKAGE_VERSION=${{ needs.get-tag.outputs.tag-name }} | |
echo "chart=$(cat operator/build/chart)" >> $GITHUB_OUTPUT | |
publish-images: | |
runs-on: ubuntu-latest | |
needs: [get-tag] | |
outputs: | |
local-artifact-mirror: ${{ steps.local-artifact-mirror.outputs.image }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Cache Melange | |
uses: actions/cache@v4 | |
with: | |
path: | | |
build/.melange-cache | |
key: melange-cache | |
- name: Setup Melange | |
uses: chainguard-dev/actions/setup-melange@main | |
- name: Build and push local-artifact-mirror image | |
id: local-artifact-mirror | |
env: | |
REGISTRY: docker.io | |
USERNAME: ${{ secrets.DOCKERHUB_USER }} | |
PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} | |
run: | | |
make -C local-artifact-mirror apko apko-login build-and-push-local-artifact-mirror-image \ | |
PACKAGE_VERSION=${{ needs.get-tag.outputs.tag-name }} | |
echo "image=$(cat local-artifact-mirror/build/image)" >> $GITHUB_OUTPUT | |
release: | |
runs-on: ubuntu-latest | |
needs: [get-tag, buildtools, publish-images, publish-operator-image, publish-operator-chart] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: go.mod | |
- name: Download buildtools artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: buildtools | |
path: output/bin | |
- name: Update embedded-cluster-operator metadata.yaml | |
env: | |
IMAGES_REGISTRY_SERVER: ttl.sh | |
OPERATOR_CHART: ${{ needs.publish-operator-chart.outputs.chart }} | |
OPERATOR_IMAGE: ${{ needs.publish-operator-image.outputs.image }} | |
run: | | |
./scripts/ci-update-operator-metadata.sh | |
- name: Build linux-amd64 | |
run: | | |
make embedded-cluster-linux-amd64 \ | |
VERSION=${{ needs.get-tag.outputs.tag-name }} \ | |
LOCAL_ARTIFACT_MIRROR_IMAGE=proxy.replicated.com/anonymous/${{ needs.publish-images.outputs.local-artifact-mirror }} | |
tar -C output/bin -czvf embedded-cluster-linux-amd64.tgz embedded-cluster | |
- name: Output Metadata | |
run: | | |
./output/bin/embedded-cluster version metadata > metadata.json | |
- name: Cache Staging Files | |
env: | |
S3_BUCKET: "tf-staging-embedded-cluster-bin" | |
AWS_ACCESS_KEY_ID: ${{ secrets.STAGING_EMBEDDED_CLUSTER_UPLOAD_IAM_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.STAGING_EMBEDDED_CLUSTER_UPLOAD_IAM_SECRET }} | |
AWS_REGION: "us-east-1" | |
run: | | |
export EC_VERSION="${{ needs.get-tag.outputs.tag-name }}" | |
export OPERATOR_IMAGE=proxy.replicated.com/anonymous/${{ needs.publish-operator-image.outputs.image }} | |
export OPERATOR_VERSION=$(echo "${{ needs.get-tag.outputs.tag-name }}" | sed 's/^v//') | |
./scripts/cache-files.sh | |
- name: Cache Prod Files | |
env: | |
S3_BUCKET: "tf-embedded-cluster-binaries" | |
AWS_ACCESS_KEY_ID: ${{ secrets.PROD_EMBEDDED_CLUSTER_UPLOAD_IAM_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.PROD_EMBEDDED_CLUSTER_UPLOAD_IAM_SECRET }} | |
AWS_REGION: "us-east-1" | |
run: | | |
export EC_VERSION="${{ needs.get-tag.outputs.tag-name }}" | |
export OPERATOR_IMAGE=proxy.replicated.com/anonymous/${{ needs.publish-operator-image.outputs.image }} | |
export OPERATOR_VERSION=$(echo "${{ needs.get-tag.outputs.tag-name }}" | sed 's/^v//') | |
./scripts/cache-files.sh | |
- name: Publish release | |
uses: marvinpinto/action-automatic-releases@latest | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
prerelease: true | |
files: | | |
*.tgz | |
metadata.json |