test #10
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: Build Pull Request | |
on: | |
- pull_request | |
env: | |
ARCH: amd64 | |
TAG: v2.7-${{ github.sha }} | |
GIT_TAG: v2.7-${{ github.sha }} | |
HEAD_TAG: v2.7-${{ github.sha }} | |
COMMIT: ${{ github.sha }} | |
REPOSITORY_OWNER: ${{ github.repository_owner }} | |
IMAGE: ${{ github.repository_owner }}/rancher | |
IMAGE_AGENT: ${{ github.repository_owner }}/rancher-agent | |
IMAGE_INSTALLER: ${{ github.repository_owner }}/system-agent-installer-rancher | |
jobs: | |
unit-tests: | |
uses: ./.github/workflows/unit-test.yml | |
build-chart: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- id: env | |
name: Setup Dependencies Env Variables | |
uses: ./.github/actions/setup-build-env | |
- name: Install dependencies | |
env: | |
HELM_URL: https://get.helm.sh/helm-${{ steps.env.outputs.HELM_VERSION }}-linux-amd64.tar.gz | |
run: | | |
sudo snap install yq | |
curl ${{ env.HELM_URL }} | tar xvzf - --strip-components=1 -C /tmp/ && \ | |
sudo mv /tmp/helm /usr/bin/helm_v3 && \ | |
sudo chmod +x /usr/bin/helm_v3 | |
helm_v3 plugin install https://github.com/helm-unittest/helm-unittest.git --version ${{ steps.env.outputs.HELM_UNITTEST_VERSION }}; \ | |
- name: Build | |
run: ./scripts/chart/build chart | |
- name: Validate | |
run: ./scripts/chart/validate | |
- name: Test | |
run: ./scripts/chart/test | |
- name: Package | |
run: ./scripts/chart/package | |
build-server: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
os: [linux] | |
arch: [amd64, arm64] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
# Cleaning the runner is important to free enough space to build rancher, otherwise the build will fail | |
- name: Clean runner | |
run: | | |
# removes dotnet | |
sudo rm -rf /usr/share/dotnet | |
# removes haskell | |
sudo rm -rf /opt/ghc | |
# removes android sdk | |
sudo rm -rf /usr/local/lib/android | |
- id: env | |
name: Setup Dependencies Env Variables | |
uses: ./.github/actions/setup-build-env | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.IMAGE }} | |
flavor: | | |
latest=false | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Create k3s images file | |
uses: ./.github/actions/k3s-images | |
with: | |
k3s_version: ${{ steps.env.outputs.CATTLE_K3S_VERSION }} | |
- name: Download data.json | |
run: curl -sLf https://releases.rancher.com/kontainer-driver-metadata/${{ steps.env.outputs.CATTLE_KDM_BRANCH }}/data.json > ./data.json | |
- name: Build and export server | |
id: build | |
uses: docker/build-push-action@v5 | |
with: | |
push: false | |
build-args: | | |
"VERSION=${{ env.TAG }}" | |
"COMMIT=${{ github.SHA }}" | |
"RKE_VERSION=${{ steps.env.outputs.RKE_VERSION }}" | |
"ARCH=${{ matrix.arch }}" | |
"CATTLE_RANCHER_WEBHOOK_VERSION=${{ steps.env.outputs.CATTLE_RANCHER_WEBHOOK_VERSION }}" | |
"CATTLE_CSP_ADAPTER_MIN_VERSION=${{ steps.env.outputs.CATTLE_CSP_ADAPTER_MIN_VERSION }}" | |
"CATTLE_FLEET_VERSION=${{ steps.env.outputs.CATTLE_FLEET_VERSION }}" | |
tags: ${{ env.IMAGE }}:${{ env.TAG }}-${{ matrix.arch }} | |
context: . | |
platforms: "${{ matrix.os }}/${{ matrix.arch }}" | |
file: ./package/Dockerfile | |
labels: "${{ steps.meta.outputs.labels }}" | |
outputs: type=docker,dest=/tmp/rancher-${{ matrix.os }}-${{ matrix.arch }}.tar | |
- name: Upload image | |
uses: actions/upload-artifact@v4 | |
with: | |
name: "rancher-${{ matrix.os }}-${{ matrix.arch }}" | |
path: /tmp/rancher-${{ matrix.os }}-${{ matrix.arch }}.tar | |
if-no-files-found: error | |
retention-days: 4 | |
overwrite: false | |
build-agent: | |
needs: [build-server] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
os: [linux] | |
arch: [amd64, arm64] | |
services: | |
registry: | |
image: registry:2 | |
ports: | |
- 5000:5000 | |
env: | |
REGISTRY: "localhost:5000" | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
# Cleaning the runner is important to free enough space to build rancher, otherwise the build will fail | |
- name: Clean runner | |
run: | | |
# removes dotnet | |
sudo rm -rf /usr/share/dotnet | |
# removes haskell | |
sudo rm -rf /opt/ghc | |
# removes android sdk | |
sudo rm -rf /usr/local/lib/android | |
- id: env | |
name: Setup Dependencies Env Variables | |
uses: ./.github/actions/setup-build-env | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ env.IMAGE }} | |
flavor: | | |
latest=false | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
with: | |
driver-opts: network=host | |
- name: Download rancher image | |
uses: actions/download-artifact@v4 | |
with: | |
name: "rancher-${{ matrix.os }}-${{ matrix.arch }}" | |
path: /tmp | |
- name: Load image | |
run: | | |
image_id=$(docker load --input /tmp/rancher-${{ matrix.os }}-${{ matrix.arch }}.tar 2>&1 | grep "Loaded image" | awk '{print $NF}') | |
if [ -z "$image_id" ]; then | |
echo "Error: Failed to load image from tarball!" | |
exit 1 | |
fi | |
docker tag "$image_id" ${{ env.REGISTRY }}/${{ env.IMAGE }}:${{ env.TAG }} | |
docker push ${{ env.REGISTRY }}/${{ env.IMAGE }}:${{ env.TAG }} | |
- name: Build agent | |
id: build | |
uses: docker/build-push-action@v5 | |
with: | |
push: ${{ github.event_name != 'pull_request' }} | |
build-args: | | |
"VERSION=${{ env.TAG }}" | |
"ARCH=${{ matrix.arch }}" | |
"RANCHER_TAG=${{ env.TAG }}" | |
"RANCHER_REPO=${{ env.REPOSITORY_OWNER }}" | |
"REGISTRY=${{ env.REGISTRY }}" | |
"CATTLE_RANCHER_WEBHOOK_VERSION=${{ steps.env.outputs.CATTLE_RANCHER_WEBHOOK_VERSION }}" | |
tags: ${{ env.IMAGE_AGENT }}:${{ env.TAG }}-${{ matrix.arch }} | |
context: . | |
platforms: "${{ matrix.os }}/${{ matrix.arch }}" | |
file: ./package/Dockerfile.agent | |
labels: "${{ steps.meta.outputs.labels }}" | |
outputs: type=docker,dest=/tmp/rancher-agent-${{ matrix.os }}-${{ matrix.arch }}.tar | |
- name: Upload image | |
uses: actions/upload-artifact@v4 | |
with: | |
name: "rancher-agent-${{ matrix.os }}-${{ matrix.arch }}" | |
path: /tmp/rancher-agent-${{ matrix.os }}-${{ matrix.arch }}.tar | |
if-no-files-found: error | |
retention-days: 4 | |
overwrite: false | |
integration-tests: | |
needs: [build-agent] | |
uses: ./.github/workflows/integration-tests.yml | |
with: | |
parent_run_id: ${{ github.run_id }} | |
build-agent-windows: | |
strategy: | |
matrix: | |
os: [windows] | |
version: [2019, 2022] | |
runs-on: ${{ matrix.os }}-${{ matrix.version }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Build Windows Agent Image | |
run: docker build -t ${{ env.IMAGE_AGENT }}:${{ env.TAG }} --build-arg VERSION=${{ env.COMMIT }} --build-arg SERVERCORE_VERSION=ltsc${{ matrix.version }} -f package/windows/Dockerfile.agent . |