@ -20,6 +20,7 @@ on:
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				env: 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				   DESTDIR :   "./bin" 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				   K3S_VERSION :   "v1.21.2-k3s1" 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				jobs: 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				   build: 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -133,20 +134,67 @@ jobs:
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				       -
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         name :   Install k3s 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         if :   matrix.driver == 'kubernetes' 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         uses :   debianmaster/actions-k3s@b9cf3f599fd118699a3c8a0d18a2f2bda6cf4ce4 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         id :   k3s 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         uses :   actions/github-script@v6 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         with: 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				           version :   v1.21.2-k3s1 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				           script :   | 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             const fs = require('fs'); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             let wait = function(milliseconds) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               return new Promise((resolve, reject) => { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 if (typeof(milliseconds) !== 'number') {  
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                   throw new Error('milleseconds not a number');  
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 setTimeout(() => resolve("done!"), milliseconds) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               }); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             try { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               const kubeconfig="/tmp/buildkit-k3s/kubeconfig.yaml"; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               core.info(`storing kubeconfig in ${kubeconfig}`); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				           
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               await exec.exec('docker', ["run", "-d", 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 "--privileged" , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 "--name=buildkit-k3s" , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 "-e" ,   "K3S_KUBECONFIG_OUTPUT=" +kubeconfig, 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 "-e" ,   "K3S_KUBECONFIG_MODE=666" , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 "-v" ,   "/tmp/buildkit-k3s:/tmp/buildkit-k3s" , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 "-p" ,   "6443:6443" , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 "-p" ,   "80:80" , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 "-p" ,   "443:443" , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 "-p" ,   "8080:8080" , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 "rancher/k3s:${{ env.K3S_VERSION }}" ,   "server" 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               ] ); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               await wait(10000); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               core.exportVariable('KUBECONFIG', kubeconfig); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               let nodeName; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               for (let count = 1; count <= 5; count++) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 try { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                   const nodeNameOutput = await exec.getExecOutput("kubectl get nodes --no-headers -oname"); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                   nodeName = nodeNameOutput.stdout 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 }  catch (error) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                   core.info(`Unable to resolve node name (${error.message}). Attempt ${count} of 5.`) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 }  finally { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                   if (nodeName) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     break; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                   }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                   await wait(5000); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               if (!nodeName) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 throw new Error(`Unable to resolve node name after 5 attempts.`); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               await exec.exec(`kubectl wait --for=condition=Ready ${nodeName}`); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             }  catch (error) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				               core.setFailed(error.message); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				       -
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         name :   Config k3s 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         name :   Print KUBECONFIG 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         if :   matrix.driver == 'kubernetes' 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         run :   | 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				           (set -x ; cat ${{ steps.k3s.outputs.kubeconfig }}) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				       -
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         name :   Check k3s nodes 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         if :   matrix.driver == 'kubernetes' 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         run :   | 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				           kubectl get nodes 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				           yq ${{ env.KUBECONFIG }} 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				       -
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         name :   Launch remote buildkitd 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         if :   matrix.driver == 'remote'