@@ -1 +0,0 @@ | |||
<svg width="90" height="90" xmlns="http://www.w3.org/2000/svg"><g stroke="#236A97" stroke-width="2" fill="none" fill-rule="evenodd"><path d="M32.087 83H12V12h66v71H57.913"/><path d="M57.79 78H72V18H18v60h14.21M12 12h66V1H12zM17 7h3M23 7h3M28 7h3M34 7h40"/><path d="M56.355 48.275c0 6.258-5.083 11.327-11.355 11.327s-11.355-5.069-11.355-11.327S38.728 36.948 45 36.948s11.355 5.069 11.355 11.327z"/><path d="M61.336 55.028a7.07 7.07 0 0 1-1.276 8.27 7.114 7.114 0 0 1-8.29 1.273A7.101 7.101 0 0 1 45 69.513a7.098 7.098 0 0 1-6.77-4.942 7.114 7.114 0 0 1-8.29-1.274 7.064 7.064 0 0 1-1.277-8.269c-2.867-.906-4.954-3.58-4.954-6.754 0-3.171 2.087-5.846 4.954-6.752a7.07 7.07 0 0 1 1.277-8.27 7.114 7.114 0 0 1 8.29-1.273A7.1 7.1 0 0 1 45 27.036a7.102 7.102 0 0 1 6.77 4.943 7.114 7.114 0 0 1 8.29 1.274 7.07 7.07 0 0 1 1.276 8.269c2.869.906 4.954 3.58 4.954 6.752a7.084 7.084 0 0 1-4.954 6.754z"/><path d="M36.484 69.514V87.92L45 83.673l8.516 4.247V69.514M45 83.673v-7.08M45 42.611V53.94M45 42.611a4.254 4.254 0 0 1-4.258 4.248M81.903 18.54H89v59.47h-7.097M89 29.868h-7.097M84.742 24.205h-2.839M8.097 18.54H1v59.47h7.097M8.097 29.868H1M8.097 24.205H5.258"/></g></svg> |
@@ -1 +0,0 @@ | |||
<svg width="58" height="56" xmlns="http://www.w3.org/2000/svg"><g fill="#4680A5" fill-rule="nonzero"><path d="M28.5 19a9.503 9.503 0 0 0-8.088 4.523 1.198 1.198 0 0 0-.102.172A9.438 9.438 0 0 0 19 28.5c0 1.353.286 2.64.798 3.806.022.061.049.12.08.177C21.388 35.737 24.684 38 28.5 38a9.498 9.498 0 0 0 7.925-4.269 1.2 1.2 0 0 0 .117-.183 9.44 9.44 0 0 0 1.453-4.822c.003-.037.005-.075.005-.114l-.002-.037L38 28.5c0-5.238-4.261-9.5-9.5-9.5zm7.127 8.464h-4.152a5.414 5.414 0 0 0-3.854 1.596l-.788.788a3.13 3.13 0 0 1-2.228.923h-2.938a7.16 7.16 0 0 1-.37-2.271 7.16 7.16 0 0 1 .73-3.156h7.28a1.15 1.15 0 0 0 0-2.298h-5.503a7.17 7.17 0 0 1 4.696-1.748c3.62 0 6.623 2.684 7.127 6.166zm-12.69 5.605h1.668a5.414 5.414 0 0 0 3.853-1.596l.788-.788a3.132 3.132 0 0 1 2.229-.923h4.114a7.147 7.147 0 0 1-.729 2.113h-2.545a1.15 1.15 0 0 0 0 2.298h.615a7.163 7.163 0 0 1-4.43 1.53 7.192 7.192 0 0 1-5.564-2.634z"/><path d="M42.177 15.924c-2.408-2.636-5.517-4.663-8.99-5.863a1.117 1.117 0 0 0-1.423.708c-.2.594.113 1.24.699 1.442 3.123 1.078 5.913 2.896 8.07 5.255 2.287 2.504 3.705 5.49 4.1 8.633.59 4.716-.915 9.5-4.13 13.127-3.111 3.509-7.465 5.503-11.985 5.503-.1 0-.2 0-.3-.003-3.427-.067-6.713-1.208-9.362-3.233.34-.625.535-1.343.535-2.107 0-2.414-1.94-4.379-4.323-4.379-.451 0-.92.072-1.33.202 0 0-1.028-1.91-1.404-5.157a16.581 16.581 0 0 1 .29-5.422c.788-3.618 2.794-6.913 5.643-9.24 1.657-1.352 3.607-2.362 5.643-2.981.593-.18.93-.813.752-1.414a1.118 1.118 0 0 0-1.395-.761c-7.101 2.158-12.34 8.447-13.154 15.923-.382 3.51.207 7.119 1.757 10.286a4.395 4.395 0 0 0-1.124 2.943c0 2.415 1.938 4.38 4.322 4.38.813 0 1.574-.23 2.225-.627 3.062 2.416 6.89 3.78 10.882 3.857.114.003.229.004.343.004 5.156 0 10.116-2.268 13.652-6.256 3.651-4.118 5.36-9.56 4.686-14.93-.454-3.617-2.071-7.037-4.679-9.89zm-29.19 23.462c0-1.162.934-2.107 2.08-2.107 1.148 0 2.082.945 2.082 2.107 0 1.163-.934 2.108-2.081 2.108-1.147 0-2.08-.945-2.08-2.108z"/><path d="M58 17.675c0-1.44-.559-2.793-1.573-3.811a5.329 5.329 0 0 0-3.799-1.579c-.51 0-1.008.072-1.486.21a28.132 28.132 0 0 0-9.442-8.84A27.836 27.836 0 0 0 27.905 0C20.45 0 13.444 2.912 8.173 8.201 2.903 13.489 0 20.521 0 28.001c0 7.478 2.902 14.51 8.173 19.798C13.443 53.088 20.451 56 27.904 56c7.454 0 14.462-2.912 19.732-8.2 5.27-5.29 8.173-12.32 8.173-19.8 0-1.89-.19-3.776-.564-5.617A5.402 5.402 0 0 0 58 17.675zm-4.93 5.373A26.04 26.04 0 0 1 53.543 28c0 6.872-2.667 13.332-7.51 18.192-4.843 4.859-11.281 7.535-18.13 7.535-6.848 0-13.286-2.676-18.13-7.535C4.934 41.332 2.267 34.872 2.267 28S4.933 14.668 9.775 9.808c4.843-4.859 11.281-7.535 18.13-7.535a25.57 25.57 0 0 1 12.674 3.358 25.852 25.852 0 0 1 8.56 7.947 5.364 5.364 0 0 0-1.882 4.097c0 1.44.558 2.793 1.573 3.811a5.39 5.39 0 0 0 4.24 1.562zm1.755-3.17c-.365.367-.798.621-1.26.767a3.13 3.13 0 0 1-3.499-1.208 3.159 3.159 0 0 1-.252-3.08 3.102 3.102 0 0 1 5.01-.885 3.127 3.127 0 0 1 0 4.407z"/><path d="M26.073 10.382c.158.385.558.639.975.617.414-.022.776-.301.905-.694a1.01 1.01 0 0 0-.344-1.1 1.013 1.013 0 0 0-1.166-.039 1.013 1.013 0 0 0-.37 1.216z"/></g></svg> |
@@ -1 +0,0 @@ | |||
<svg width="59" height="44" xmlns="http://www.w3.org/2000/svg"><g fill="#4680A5" fill-rule="nonzero"><path d="M57.025 34.892h-.064v-5.195c0-12.966-8.998-24.204-21.495-26.99A2.994 2.994 0 0 0 34.64.92 2.96 2.96 0 0 0 32.487 0h-5.974a2.96 2.96 0 0 0-2.154.92 2.995 2.995 0 0 0-.825 1.788C11.037 5.493 2.04 16.73 2.04 29.697v5.195h-.064C.885 34.892 0 35.784 0 36.88v1.309c0 .865.544 1.626 1.354 1.893C9.03 42.608 19.027 44 29.5 44c10.473 0 20.47-1.392 28.146-3.918A1.981 1.981 0 0 0 59 38.189V36.88a1.984 1.984 0 0 0-1.975-1.988zM25.735 2.257c.205-.215.482-.333.778-.333h5.974a1.085 1.085 0 0 1 1.083 1.128l-.88 25.656a1.082 1.082 0 0 1-1.082 1.053h-4.216a1.082 1.082 0 0 1-1.082-1.053l-.88-25.656c-.01-.298.098-.58.304-.795zm31.354 35.932c0 .026-.012.056-.037.064-7.49 2.465-17.275 3.823-27.552 3.823-10.277 0-20.062-1.358-27.552-3.823-.025-.009-.036-.038-.036-.064V36.88c0-.035.028-.064.063-.064h36.7c.528 0 .956-.43.956-.962a.959.959 0 0 0-.956-.962H3.95v-5.195c0-9.67 5.38-18.305 13.5-22.687l2.075 14.614a.958.958 0 0 0 1.08.816.961.961 0 0 0 .812-1.088l-2.16-15.227a25.222 25.222 0 0 1 4.317-1.452l.825 24.102a2.992 2.992 0 0 0 2.993 2.91h4.216a2.993 2.993 0 0 0 2.993-2.91l.826-24.102c1.498.358 2.941.846 4.317 1.453l-2.16 15.226a.961.961 0 0 0 .947 1.098.958.958 0 0 0 .945-.826L41.55 7.01c8.121 4.382 13.5 13.017 13.5 22.687v5.195h-6.18a.959.959 0 0 0-.956.962c0 .532.428.962.955.962h8.156c.035 0 .064.03.064.065v1.308z"/><path d="M45.032 35h-2.064c-.535 0-.968.448-.968 1s.433 1 .968 1h2.064c.535 0 .968-.448.968-1s-.433-1-.968-1zM22.987 27.896l-.397-2.065c-.102-.53-.76-.897-1.472-.821-.712.075-1.206.566-1.105 1.094l.397 2.065c.093.483.65.831 1.287.831.061 0 .123-.003.185-.01.712-.075 1.206-.565 1.105-1.094zM37.882 25.01c-.711-.076-1.37.292-1.472.82l-.397 2.066c-.101.529.393 1.019 1.105 1.094.062.007.124.01.185.01.637 0 1.194-.348 1.287-.83l.397-2.066c.101-.528-.393-1.019-1.105-1.094z"/></g></svg> |
@@ -1 +0,0 @@ | |||
<svg width="62" height="76" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M0 76h62V0H0z"/></defs><g fill="none" fill-rule="evenodd"><path d="M24 37v4.667c0 .597.244 1.194.733 1.65A2.584 2.584 0 0 0 26.5 44c.64 0 1.279-.227 1.767-.684a2.246 2.246 0 0 0 .733-1.65V37" stroke="#236A97" stroke-width="2"/><path d="M28 37v5.714c0 .585.244 1.17.733 1.616.488.447 1.127.67 1.767.67.64 0 1.279-.223 1.767-.67A2.18 2.18 0 0 0 33 42.714V37M33 36.53v14.117c0 .602.244 1.205.733 1.664.488.46 1.127.689 1.767.689.64 0 1.279-.23 1.767-.69A2.273 2.273 0 0 0 38 50.648V33" stroke="#236A97" stroke-width="2"/><path d="M23.8 36.958v3.625c0 .619-.234 1.238-.703 1.709A2.382 2.382 0 0 1 21.4 43a2.382 2.382 0 0 1-1.697-.708A2.414 2.414 0 0 1 19 40.583V23.667L21.4 14h16.8v3.625l4.8 8.458v7.25c0 .619-.234 1.238-.703 1.709a2.382 2.382 0 0 1-1.697.708 2.382 2.382 0 0 1-1.697-.708 2.414 2.414 0 0 1-.703-1.709V28.5M40 0v14H19V0M36 10V8M56 47V29M60 41l-4.5 5-4.5-5M56 26v-2M56 21v-2M6 47V29M10 41l-4.5 5L1 41M6 26v-2M6 21v-2M41.8 54h18c.307 0 .614.114.848.342.234.227.352.526.352.825v18.666c0 .299-.118.598-.352.825A1.214 1.214 0 0 1 59.8 75H2.2c-.307 0-.614-.114-.848-.342A1.147 1.147 0 0 1 1 73.833V55.167c0-.299.118-.598.352-.825.234-.228.54-.342.848-.342h27.6M25 64h2M30 64h2M35 64h2" stroke="#236A97" stroke-width="2"/><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><path stroke="#236A97" stroke-width="2" mask="url(#b)" d="M6 70h50V58H6z"/></g></svg> |
@@ -1 +0,0 @@ | |||
<svg width="62" height="62" xmlns="http://www.w3.org/2000/svg"><g fill="#4680A5" fill-rule="nonzero"><path d="M32.561 29.44a1.5 1.5 0 1 0-2.122 2.12 1.5 1.5 0 0 0 2.122-2.12zM48.241 13.759a5.998 5.998 0 0 0-8.487 0 6.01 6.01 0 0 0 0 8.487 6.009 6.009 0 0 0 8.487 0 5.998 5.998 0 0 0 0-8.487zm-1.697 6.79a3.605 3.605 0 0 1-5.092 0 3.606 3.606 0 0 1 0-5.093 3.599 3.599 0 0 1 5.092 0 3.599 3.599 0 0 1 0 5.092z"/><path d="M61.648.352a1.198 1.198 0 0 0-.893-.351c-.272.01-6.743.27-14.435 2.988-6.164 2.177-11.301 5.293-15.27 9.262a45.74 45.74 0 0 0-2.583 2.812c-3.924-2.31-7.069-1.586-9.057-.522-4.577 2.45-7.41 9.1-7.41 13.858a1.202 1.202 0 0 0 2.052.85c2.414-2.414 5.392-2.263 6.364-2.135l.421.421a42.277 42.277 0 0 0-1.985 5.838c-.177.69-.117 1.42.146 2.088a11.383 11.383 0 0 0-3.246 2.288c-3.094 3.094-3.723 10.635-3.748 10.954a1.202 1.202 0 0 0 1.293 1.293c.32-.025 7.86-.653 10.954-3.747a11.383 11.383 0 0 0 2.288-3.245 3.394 3.394 0 0 0 2.09.144 42.282 42.282 0 0 0 5.836-1.985l.421.421c.128.973.279 3.95-2.135 6.364a1.202 1.202 0 0 0 .85 2.052c4.757 0 11.409-2.833 13.858-7.41 1.064-1.988 1.788-5.133-.522-9.057a45.756 45.756 0 0 0 2.813-2.583c3.969-3.969 7.084-9.107 9.26-15.27C61.73 7.988 61.99 1.517 62 1.245a1.202 1.202 0 0 0-.352-.893zm-46.96 25.462c.746-3.614 2.915-7.579 5.857-9.154 1.967-1.052 4.116-.949 6.401.302a48.6 48.6 0 0 0-5.05 8.232c-.018-.01-.234-.283-.636-.374-.166-.037-3.346-.72-6.573.994zm7.863 18.735c-1.653 1.653-5.53 2.524-7.98 2.88.356-2.45 1.228-6.327 2.88-7.98.926-.925 2-1.627 3.078-2.022l4.045 4.045c-.396 1.078-1.097 2.151-2.023 3.077zm5.48-3.73c-.348.09-.75-.041-1.05-.34a22337.974 22337.974 0 0 0-5.459-5.459c-.3-.3-.43-.703-.341-1.05a39.03 39.03 0 0 1 1.5-4.59l9.94 9.939a39.003 39.003 0 0 1-4.59 1.5zm17.309.636c-1.575 2.942-5.54 5.111-9.153 5.858 1.152-2.168 1.406-4.928.985-6.602-.098-.388-.351-.584-.366-.607a48.618 48.618 0 0 0 8.232-5.05c1.251 2.286 1.354 4.435.302 6.401zm2.71-12.205a43.628 43.628 0 0 1-3.467 3.11 46.18 46.18 0 0 1-9.581 5.94L23.7 27a46.172 46.172 0 0 1 5.94-9.583 43.619 43.619 0 0 1 3.11-3.467c3.56-3.56 8.156-6.395 13.662-8.435l10.072 10.072c-2.04 5.506-4.874 10.102-8.435 13.663zm9.3-16.198L48.948 4.65c4.578-1.422 8.56-1.954 10.547-2.146-.191 1.988-.724 5.97-2.145 10.547z"/><path d="M28.636 50.364a1.243 1.243 0 0 0-1.758 0l-3.514 3.515a1.242 1.242 0 1 0 1.758 1.757l3.514-3.515a1.242 1.242 0 0 0 0-1.757zM11.636 33.364a1.242 1.242 0 0 0-1.757 0l-3.515 3.514a1.243 1.243 0 0 0 1.757 1.758l3.515-3.514a1.243 1.243 0 0 0 0-1.758zM20.666 52.334a1.14 1.14 0 0 0-1.612 0l-7.72 7.72a1.14 1.14 0 0 0 1.612 1.612l7.72-7.72a1.14 1.14 0 0 0 0-1.612zM10.666 52.334a1.14 1.14 0 0 0-1.612 0l-7.72 7.72a1.14 1.14 0 0 0 1.612 1.612l7.72-7.72a1.14 1.14 0 0 0 0-1.612zM9.666 41.334a1.14 1.14 0 0 0-1.612 0l-7.72 7.72a1.14 1.14 0 1 0 1.612 1.612l7.72-7.72a1.14 1.14 0 0 0 0-1.612zM37.657 24.343a1.172 1.172 0 0 0-1.657 0L34.343 26A1.172 1.172 0 0 0 36 27.657L37.657 26c.457-.457.457-1.2 0-1.657z"/></g></svg> |
@@ -1,17 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-1045.352 -4278.348 41.911 37.021"> | |||
<defs> | |||
<style> | |||
.cls-1 { | |||
fill: #434447; | |||
} | |||
.cls-2 { | |||
fill: #f3702a; | |||
} | |||
</style> | |||
</defs> | |||
<g id="cloud-computing" transform="translate(-1045.352 -4278.348)"> | |||
<path id="Tracé_10173" data-name="Tracé 10173" class="cls-1" d="M35.607,14.812A11.96,11.96,0,0,0,23.808,3.5a12.313,12.313,0,0,0-9.742,4.9c-.052-.027-.108-.046-.161-.072-.137-.066-.275-.129-.417-.186-.082-.033-.166-.062-.25-.092-.138-.048-.277-.091-.419-.129-.084-.022-.167-.045-.251-.065-.154-.035-.31-.061-.468-.085-.073-.011-.146-.025-.22-.034a6.155,6.155,0,0,0-.7-.043A6.294,6.294,0,0,0,4.89,13.978c0,.09.006.178.011.266A9.659,9.659,0,0,0,0,22.468a8.983,8.983,0,0,0,8.973,8.973h3.6a.7.7,0,1,0,0-1.4h-3.6A7.584,7.584,0,0,1,1.4,22.468,8.3,8.3,0,0,1,5.89,15.306l.4-.189v-.44c0-.086.006-.174.01-.262l.006-.121L6.3,14.152c0-.058-.008-.116-.008-.175a4.857,4.857,0,0,1,5.53-4.843c.054.007.109.016.163.025a4.909,4.909,0,0,1,.551.123l.074.019a4.874,4.874,0,0,1,.583.224c.049.022.1.046.145.07a4.827,4.827,0,0,1,.492.278,4.889,4.889,0,0,1,2.239,4.1.7.7,0,1,0,1.4,0,6.272,6.272,0,0,0-2.235-4.8A11.063,11.063,0,0,1,23.808,4.9,10.545,10.545,0,0,1,34.18,14.6a13.3,13.3,0,0,0-2.852.087.7.7,0,0,0,.1,1.389.686.686,0,0,0,.106-.008,12.879,12.879,0,0,1,3.272,0,7.159,7.159,0,0,1,5.7,6.975,7.013,7.013,0,0,1-7,7H30.735a.7.7,0,1,0,0,1.4H33.51a8.412,8.412,0,0,0,8.4-8.4A8.6,8.6,0,0,0,35.607,14.812Z" transform="translate(0 -3.5)"/> | |||
<path id="Tracé_10174" data-name="Tracé 10174" class="cls-2" d="M33.381,31.281a.7.7,0,1,0,.988-.988l-5.587-5.587a.692.692,0,0,0-.228-.152.7.7,0,0,0-.761.152L22.2,30.293a.7.7,0,1,0,.988.988l4.4-4.4V44.468l-4.4-4.4a.7.7,0,0,0-.988.988l5.587,5.587a.692.692,0,0,0,.228.152.7.7,0,0,0,.761-.152l5.587-5.587a.7.7,0,0,0-.988-.988l-4.4,4.4V26.885Z" transform="translate(-6.632 -9.831)"/> | |||
</g> | |||
</svg> |
@@ -1,3 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22.009 22"> | |||
<path fill="#0078d7" d="M2.916 15.015v-7.25l19.093-3.758v13.446L16.62 21.92l-8.226-2.757V22l-5.478-6.985 13.216 1.728V5.052L9.812 0l.044 2.3-7.516 3L0 8.1v6.3z"/> | |||
</svg> |
@@ -1 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-361.924 -3545.014 58.441 52.551"><defs><linearGradient id="a" x1="1.086" y1=".138" x2=".469" y2=".788" gradientUnits="objectBoundingBox"><stop offset=".18" stop-color="#0052cc"/><stop offset="1" stop-color="#2684ff"/></linearGradient></defs><g data-name="Groupe 6140"><path data-name="Tracé 10420" d="M-360.027-3545.013a1.872 1.872 0 0 0-1.871 2.172l7.947 48.253a2.547 2.547 0 0 0 2.49 2.125h38.133a1.872 1.872 0 0 0 1.872-1.573l7.949-48.8a1.872 1.872 0 0 0-1.872-2.172zm33.47 34.875h-12.171l-3.3-17.217h18.42z" fill="#2684ff"/><path data-name="Tracé 10421" d="M56.464 25.12H38.891l-2.949 17.217H23.771L9.4 59.4a2.537 2.537 0 0 0 1.638.618H49.18a1.872 1.872 0 0 0 1.872-1.573z" transform="translate(-362.499 -3552.476)" fill="url(#a)"/></g></svg> |
@@ -1,12 +0,0 @@ | |||
<svg width="59" height="54" xmlns="http://www.w3.org/2000/svg"> | |||
<defs> | |||
<linearGradient x1="97.494%" y1="25.5%" x2="46.9%" y2="78.8%" id="a"> | |||
<stop stop-color="#B5B5B5" offset="0%"/> | |||
<stop stop-color="#DDD" offset="100%"/> | |||
</linearGradient> | |||
</defs> | |||
<g fill-rule="nonzero" fill="none"> | |||
<path d="M1.973.987A1.872 1.872 0 0 0 .102 3.159l7.947 48.253a2.547 2.547 0 0 0 2.49 2.125h38.133a1.872 1.872 0 0 0 1.872-1.573l7.949-48.8A1.872 1.872 0 0 0 56.621.992L1.973.987zm33.47 34.875H23.272l-3.3-17.217h18.42l-2.949 17.217z" fill="#DDD"/> | |||
<path d="M55.965 18.644H38.392l-2.949 17.217H23.272L8.901 52.924a2.537 2.537 0 0 0 1.638.618h38.142a1.872 1.872 0 0 0 1.872-1.573l5.412-33.325z" fill="url(#a)"/> | |||
</g> | |||
</svg> |
@@ -1,10 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" focusable="false" role="presentation"> | |||
<defs> | |||
<linearGradient id="a-acb7415e-40c7-472a-ade9-3b99b6a8fba4" x1="97.526%" x2="46.927%" y1="25.488%" y2="78.776%"> | |||
<stop offset="0%" stop-color="#FFF" stop-opacity=".4"/> | |||
<stop offset="100%" stop-color="#FFF"/> | |||
</linearGradient> | |||
</defs> | |||
<path fill="url(#a-acb7415e-40c7-472a-ade9-3b99b6a8fba4)" d="M20.063 9.297h-5.279l-.886 5.16h-3.656l-4.317 5.116a.763.763 0 0 0 .492.186h11.458a.562.562 0 0 0 .563-.472l1.625-9.99z" transform="matrix(1.33 0 0 1.33 -4 -3.8)"/> | |||
<path fill="#FFF" d="M1.11252 1.52a.74879.74879 0 0 0-.74879.86583L3.5411 21.6296a1.01479 1.01479 0 0 0 .99484.84721l5.89589-7.049h-.82726l-1.29808-6.8628h14.37863l1.0108-6.1712a.7448.7448 0 0 0-.73815-.87381H1.11252z"/> | |||
</svg> |
@@ -1,10 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-361.924 -3545.014 58.441 52.551"> | |||
<defs> | |||
<linearGradient id="a" x1="1.086" x2=".469" y1=".138" y2=".788" gradientUnits="objectBoundingBox"> | |||
<stop offset=".18" stop-color="#0052cc"/> | |||
<stop offset="1" stop-color="#2684ff"/> | |||
</linearGradient> | |||
</defs> | |||
<path fill="#2684ff" d="M-360.027-3545.013a1.872 1.872 0 0 0-1.871 2.172l7.947 48.253a2.547 2.547 0 0 0 2.49 2.125h38.133a1.872 1.872 0 0 0 1.872-1.573l7.949-48.8a1.872 1.872 0 0 0-1.872-2.172zm33.47 34.875h-12.171l-3.3-17.217h18.42z"/> | |||
<path fill="url(#a)" d="M56.464 25.12H38.891l-2.949 17.217H23.771L9.4 59.4a2.537 2.537 0 0 0 1.638.618H49.18a1.872 1.872 0 0 0 1.872-1.573z" transform="translate(-362.499 -3552.476)"/> | |||
</svg> |
@@ -1,45 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-661.517 -4278.348 19.786 37.022"> | |||
<defs> | |||
<style> | |||
.cls-1, .cls-5 { | |||
fill: none; | |||
} | |||
.cls-1, .cls-2 { | |||
stroke: #f3702a; | |||
} | |||
.cls-1, .cls-2, .cls-3 { | |||
stroke-width: 1.75px; | |||
} | |||
.cls-2, .cls-3 { | |||
fill: #fff; | |||
} | |||
.cls-3 { | |||
stroke: #434447; | |||
} | |||
.cls-4 { | |||
stroke: none; | |||
} | |||
</style> | |||
</defs> | |||
<g id="Groupe_6132" data-name="Groupe 6132" transform="translate(-1234 -5514)"> | |||
<path id="Tracé_10264" data-name="Tracé 10264" class="cls-1" d="M-1182.043-7730.764v6.537s.38,10.115-11.614,9.954" transform="translate(1770.587 8970.999)"/> | |||
<g id="Ellipse_69" data-name="Ellipse 69" class="cls-2" transform="translate(584.619 1235.652)"> | |||
<ellipse class="cls-4" cx="3.825" cy="3.967" rx="3.825" ry="3.967"/> | |||
<ellipse class="cls-5" cx="3.825" cy="3.967" rx="2.95" ry="3.092"/> | |||
</g> | |||
<path id="Tracé_10265" data-name="Tracé 10265" class="cls-3" d="M-1193.77-7704.575v-26.188" transform="translate(1770.077 8970.999)"/> | |||
<g id="Ellipse_70" data-name="Ellipse 70" class="cls-3" transform="translate(572.483 1235.652)"> | |||
<ellipse class="cls-4" cx="3.825" cy="3.967" rx="3.825" ry="3.967"/> | |||
<ellipse class="cls-5" cx="3.825" cy="3.967" rx="2.95" ry="3.092"/> | |||
</g> | |||
<g id="Ellipse_71" data-name="Ellipse 71" class="cls-3" transform="translate(572.483 1264.741)"> | |||
<ellipse class="cls-4" cx="3.825" cy="3.967" rx="3.825" ry="3.967"/> | |||
<ellipse class="cls-5" cx="3.825" cy="3.967" rx="2.95" ry="3.092"/> | |||
</g> | |||
</g> | |||
</svg> |
@@ -1,3 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 17.438 12.801"> | |||
<path fill="#3dc92c" d="M17.184.255a.877.877 0 0 0-1.237 0L5.507 10.689 1.491 6.674A.873.873 0 0 0 .254 7.906l4.64 4.64a.877.877 0 0 0 1.237 0L17.184 1.489a.872.872 0 0 0 0-1.234z" data-name="Tracé 9550"/> | |||
</svg> |
@@ -1 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18.9 34.488"><path d="M17.15 0a1.606 1.606 0 0 1 1.1.5 1.693 1.693 0 0 1 0 2.3L3.95 17.1l14.5 14.6a1.693 1.693 0 0 1 0 2.3 1.6 1.6 0 0 1-2.3 0L.45 18.3a1.693 1.693 0 0 1 0-2.3L16.05.5a1.606 1.606 0 0 1 1.1-.5z" fill="#cfd3d7"/></svg> |
@@ -1 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18.9 34.488"><path d="M1.75 34.488a1.606 1.606 0 0 1-1.1-.5 1.693 1.693 0 0 1 0-2.3l14.3-14.3-14.5-14.6a1.693 1.693 0 0 1 0-2.3 1.6 1.6 0 0 1 2.3 0l15.7 15.7a1.693 1.693 0 0 1 0 2.3l-15.6 15.5a1.606 1.606 0 0 1-1.1.5z" fill="#cfd3d7"/></svg> |
@@ -1 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-738.601 -3545.014 54.017 52.551"><path data-name="Tracé 10732" d="M-711.675-3545.014a26.975 26.975 0 0 0-8.59 52.53c1.322.165 1.817-.661 1.817-1.322v-4.625c-7.433 1.652-9.085-3.634-9.085-3.634-1.156-3.139-2.973-3.965-2.973-3.965-2.478-1.652.165-1.652.165-1.652 2.643.165 4.13 2.808 4.13 2.808 2.478 4.13 6.277 2.973 7.764 2.313a5.752 5.752 0 0 1 1.646-3.634c-5.947-.661-12.224-2.973-12.224-13.38a10.24 10.24 0 0 1 2.808-7.268 9.781 9.781 0 0 1 .33-6.938s2.313-.661 7.433 2.808a23.083 23.083 0 0 1 6.773-.826 30.4 30.4 0 0 1 6.773.826c5.121-3.469 7.433-2.808 7.433-2.808a10.343 10.343 0 0 1 .33 7.1 10.684 10.684 0 0 1 2.815 7.267c0 10.407-6.277 12.554-12.224 13.215.991.826 1.817 2.478 1.817 4.956v7.433c0 .661.5 1.487 1.817 1.322a26.976 26.976 0 0 0-8.755-52.526z" fill="#191717" fill-rule="evenodd"/></svg> |
@@ -1,7 +0,0 @@ | |||
<svg width="14" height="14" xmlns="http://www.w3.org/2000/svg"> | |||
<g fill="none" fill-rule="evenodd"> | |||
<path d="M-1-1h16v16H-1z"/> | |||
<path d="M13.061 3.574A7.06 7.06 0 0 0 10.514.962 6.719 6.719 0 0 0 7 0a6.72 6.72 0 0 0-3.514.962A7.059 7.059 0 0 0 .94 3.574 7.155 7.155 0 0 0 0 7.175c0 1.564.445 2.97 1.335 4.219.89 1.248 2.04 2.113 3.45 2.592.164.031.286.01.365-.065a.37.37 0 0 0 .118-.28l-.005-.505a85.532 85.532 0 0 1-.004-.831l-.21.037a2.61 2.61 0 0 1-.506.033 3.763 3.763 0 0 1-.633-.066 1.399 1.399 0 0 1-.61-.28 1.185 1.185 0 0 1-.402-.574l-.09-.215a2.346 2.346 0 0 0-.288-.477c-.13-.174-.263-.292-.396-.355l-.064-.047a.676.676 0 0 1-.119-.112.514.514 0 0 1-.082-.13c-.018-.044-.003-.08.046-.108.049-.028.137-.042.264-.042l.182.028c.122.025.272.1.452.224.179.125.326.287.442.486.14.255.308.45.505.584.198.134.397.2.597.2.2 0 .374-.015.52-.046.146-.031.282-.078.41-.14.055-.418.204-.738.447-.962a6.103 6.103 0 0 1-.935-.169 3.67 3.67 0 0 1-.856-.364 2.47 2.47 0 0 1-.734-.626c-.194-.25-.354-.576-.478-.981A4.774 4.774 0 0 1 2.534 6.8c0-.753.24-1.395.72-1.924-.225-.567-.204-1.202.064-1.906.176-.056.437-.014.783.126.347.14.6.26.761.36.162.1.29.183.388.252A6.324 6.324 0 0 1 7 3.466c.601 0 1.185.081 1.75.243l.346-.224c.237-.15.517-.287.839-.411.322-.125.568-.16.738-.103.274.704.298 1.339.073 1.906.48.53.72 1.17.72 1.924 0 .53-.062.998-.187 1.407-.124.408-.285.734-.483.98a2.563 2.563 0 0 1-.738.622c-.295.168-.58.29-.857.364a6.097 6.097 0 0 1-.934.169c.316.28.474.722.474 1.326v1.971c0 .112.038.206.114.28.076.075.196.097.36.066 1.41-.48 2.56-1.344 3.45-2.593C13.555 10.145 14 8.74 14 7.175a7.16 7.16 0 0 0-.939-3.601z" fill="#DDD" fill-rule="nonzero"/> | |||
</g> | |||
</svg> | |||
@@ -1,3 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" x="0" y="0" viewBox="0 0 438.5 438.5" xml:space="preserve"> | |||
<path fill="#fff" d="M409.1 114.6c-19.6-33.6-46.2-60.2-79.8-79.8C295.7 15.2 259.1 5.4 219.3 5.4c-39.8 0-76.5 9.8-110.1 29.4 -33.6 19.6-60.2 46.2-79.8 79.8C9.8 148.2 0 184.9 0 224.6c0 47.8 13.9 90.7 41.8 128.9 27.9 38.2 63.9 64.6 108.1 79.2 5.1 1 8.9 0.3 11.4-2 2.5-2.3 3.7-5.1 3.7-8.6 0-0.6 0-5.7-0.1-15.4 -0.1-9.7-0.1-18.2-0.1-25.4l-6.6 1.1c-4.2 0.8-9.5 1.1-15.8 1 -6.4-0.1-13-0.8-19.8-2 -6.9-1.2-13.2-4.1-19.1-8.6 -5.9-4.5-10.1-10.3-12.6-17.6l-2.9-6.6c-1.9-4.4-4.9-9.2-9-14.6 -4.1-5.3-8.2-8.9-12.4-10.8l-2-1.4c-1.3-1-2.6-2.1-3.7-3.4 -1.1-1.3-2-2.7-2.6-4 -0.6-1.3-0.1-2.4 1.4-3.3 1.5-0.9 4.3-1.3 8.3-1.3l5.7 0.9c3.8 0.8 8.5 3 14.1 6.9 5.6 3.8 10.2 8.8 13.8 14.8 4.4 7.8 9.7 13.8 15.8 17.8 6.2 4.1 12.4 6.1 18.7 6.1 6.3 0 11.7-0.5 16.3-1.4 4.6-1 8.8-2.4 12.8-4.3 1.7-12.8 6.4-22.6 14-29.4 -10.8-1.1-20.6-2.9-29.3-5.1 -8.7-2.3-17.6-6-26.8-11.1 -9.2-5.1-16.9-11.5-23-19.1 -6.1-7.6-11.1-17.6-15-30 -3.9-12.4-5.9-26.6-5.9-42.8 0-23 7.5-42.6 22.6-58.8 -7-17.3-6.4-36.7 2-58.2 5.5-1.7 13.7-0.4 24.6 3.9 10.9 4.3 18.8 8 23.8 11 5 3 9.1 5.6 12.1 7.7 17.7-4.9 36-7.4 54.8-7.4s37.1 2.5 54.8 7.4l10.8-6.8c7.4-4.6 16.2-8.8 26.3-12.6 10.1-3.8 17.8-4.9 23.1-3.1 8.6 21.5 9.3 40.9 2.3 58.2 15 16.2 22.6 35.8 22.6 58.8 0 16.2-2 30.5-5.9 43 -3.9 12.5-8.9 22.5-15.1 30 -6.2 7.5-13.9 13.9-23.1 19 -9.2 5.1-18.2 8.9-26.8 11.1 -8.7 2.3-18.4 4-29.3 5.1 9.9 8.6 14.8 22.1 14.8 40.5v60.2c0 3.4 1.2 6.3 3.6 8.6 2.4 2.3 6.1 3 11.3 2 44.2-14.7 80.2-41.1 108.1-79.2 27.9-38.2 41.8-81.1 41.8-128.9C438.5 184.9 428.7 148.2 409.1 114.6z"/> | |||
</svg> |
@@ -1,3 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-738.601 -3545.014 54.017 52.551"> | |||
<path fill="#191717" fill-rule="evenodd" d="M-711.675-3545.014a26.975 26.975 0 0 0-8.59 52.53c1.322.165 1.817-.661 1.817-1.322v-4.625c-7.433 1.652-9.085-3.634-9.085-3.634-1.156-3.139-2.973-3.965-2.973-3.965-2.478-1.652.165-1.652.165-1.652 2.643.165 4.13 2.808 4.13 2.808 2.478 4.13 6.277 2.973 7.764 2.313a5.752 5.752 0 0 1 1.646-3.634c-5.947-.661-12.224-2.973-12.224-13.38a10.24 10.24 0 0 1 2.808-7.268 9.781 9.781 0 0 1 .33-6.938s2.313-.661 7.433 2.808a23.083 23.083 0 0 1 6.773-.826 30.4 30.4 0 0 1 6.773.826c5.121-3.469 7.433-2.808 7.433-2.808a10.343 10.343 0 0 1 .33 7.1 10.684 10.684 0 0 1 2.815 7.267c0 10.407-6.277 12.554-12.224 13.215.991.826 1.817 2.478 1.817 4.956v7.433c0 .661.5 1.487 1.817 1.322a26.976 26.976 0 0 0-8.755-52.526z"/> | |||
</svg> |
@@ -1 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 3078.8 137.3"><path d="M3.3-.6s688 136.7 945.4 125.4c257.4-11.3 382-99.6 819.5-37s561.1 45.4 859.1 10.7S3078 21.1 3078 21.1l.5-21.7H3.3z" fill="#f9f9fb"/></svg> |
@@ -1,3 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 3407.2 300"> | |||
<path fill="#f9f9fb" d="M0 299s117.1 9.5 333.1-89.7C574.8 98.2 888.2-28.3 1056 9.5c284 64 294 220 793.6 140.2S2344 21.5 2672 163.5s735.2 136.1 735.2 136.1v29H0V299z"/> | |||
</svg> |
@@ -1,7 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1817.2 417.1"> | |||
<linearGradient id="a" x1="1339.6035" x2="627.6036" y1="-266.2397" y2="245.7604" gradientUnits="userSpaceOnUse"> | |||
<stop offset="0" stop-color="#fd6a00"/> | |||
<stop offset="1" stop-color="#fdc300"/> | |||
</linearGradient> | |||
<path fill="url(#a)" d="M944.1 264.3c-49.8-120.9-76.4-154.4-167.2-204.9C751 45 695.1 7.2 535.4 5H0V0h526.4v-.1l1289.5.1c.5 1.8.9 3.4 1.3 5-120.9 0-35 198.8-295.3 259.3-223 36.8-169.7 154.2-358.4 152.4-6.9.2-13.4.3-19.8.3-128 0-152.1-37.5-199.6-152.7z"/> | |||
</svg> |
@@ -1,108 +0,0 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<!-- Generator: Adobe Illustrator 23.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> | |||
<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | |||
viewBox="0 0 170.5 26.3" style="enable-background:new 0 0 170.5 26.3;" xml:space="preserve"> | |||
<style type="text/css"> | |||
.st0{fill:#2C2255;} | |||
.st1{fill:#F7941E;} | |||
.st2{fill:url(#SVGID_1_);} | |||
.st3{fill:url(#SVGID_2_);} | |||
.st4{fill:url(#SVGID_3_);} | |||
.st5{fill:#FFFFFF;} | |||
.st6{fill:url(#SVGID_4_);} | |||
.st7{fill:url(#SVGID_5_);} | |||
.st8{fill:url(#SVGID_6_);} | |||
.st9{fill:url(#SVGID_7_);} | |||
.st10{fill:#865FC5;} | |||
.st11{fill:#007ACC;} | |||
</style> | |||
<path class="st0" d="M7.2,16.5h-4c0.6,1.9,1.6,3.5,3,4.9c2.2,2.2,5.2,3.5,8.3,3.4c0.6,0,1.2,0,1.9-0.1c2.4-0.4,4.7-1.5,6.4-3.3 | |||
c1.4-1.4,2.4-3,3-4.9C25.7,16.5,7.2,16.5,7.2,16.5z M4.9,11.1H2.8c-0.1,0.5-0.1,0.9-0.1,1.4h23.4c0-0.5-0.1-0.9-0.1-1.4 M2.7,13.8 | |||
c0,0.5,0.1,0.9,0.1,1.4H26c0.1-0.5,0.1-0.9,0.2-1.4 M25.7,9.8c-0.6-1.9-1.6-3.6-3-4.9c-1.7-1.8-4-2.9-6.4-3.3 | |||
c-0.6-0.1-1.2-0.1-1.9-0.1c-3.1-0.1-6.1,1.2-8.3,3.4c-1.4,1.4-2.4,3.1-3,4.9"/> | |||
<path class="st1" d="M2,13.2C2.1,7,6.6,1.8,12.7,0.9h-0.5C5.5,0.9-0.1,6.3-0.1,13.1S5.3,25.4,12,25.4c0.1,0,0.1,0,0.2,0h0.5 | |||
C6.6,24.5,2,19.3,2,13.2z"/> | |||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-178.5318" y1="636.8593" x2="-178.5318" y2="649.3203" gradientTransform="matrix(15.959 0 0 -1.416 2863.6111 217.4881)"> | |||
<stop offset="0.3" style="stop-color:#473788"/> | |||
<stop offset="0.87" style="stop-color:#2C2255"/> | |||
</linearGradient> | |||
<path class="st2" d="M22.4,12.5c0-0.5-0.1-1-0.2-1.4H6.7c-0.1,0.5-0.2,0.9-0.2,1.4H22.4z"/> | |||
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-178.5318" y1="638.7803" x2="-178.5318" y2="651.2402" gradientTransform="matrix(15.959 0 0 -1.416 2863.6111 220.2051)"> | |||
<stop offset="0.3" style="stop-color:#473788"/> | |||
<stop offset="0.87" style="stop-color:#2C2255"/> | |||
</linearGradient> | |||
<path class="st3" d="M22.4,13.8h-16c0,0.5,0.1,1,0.2,1.4h15.5C22.3,14.8,22.4,14.3,22.4,13.8z"/> | |||
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-177.3258" y1="496.7565" x2="-177.3258" y2="500.5446" gradientTransform="matrix(14.498 0 0 -4.658 2585.2869 1629.5679)"> | |||
<stop offset="0.3" style="stop-color:#473788"/> | |||
<stop offset="0.86" style="stop-color:#2C2255"/> | |||
</linearGradient> | |||
<path class="st4" d="M14.4,21.2c3.1,0,5.9-1.8,7.2-4.7H7.2C8.5,19.3,11.3,21.2,14.4,21.2z"/> | |||
<path class="st5" d="M5.3,13.8h20.9v-1.3H2.7v1.3H5.3z M7.1,9.8h-4c-0.1,0.4-0.2,0.9-0.3,1.3h23.1c-0.1-0.4-0.2-0.9-0.3-1.3 | |||
M24.4,15.2H2.8c0.1,0.4,0.2,0.9,0.3,1.3h22.5c0.1-0.4,0.2-0.9,0.3-1.3H24.4z"/> | |||
<g> | |||
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-175.2318" y1="395.6365" x2="-174.2318" y2="395.6365" gradientTransform="matrix(12.113 0 0 -10.807 2169.4619 4290.5869)"> | |||
<stop offset="0.26" style="stop-color:#F97A12"/> | |||
<stop offset="0.46" style="stop-color:#B07B58"/> | |||
<stop offset="0.72" style="stop-color:#577BAE"/> | |||
<stop offset="0.91" style="stop-color:#1E7CE5"/> | |||
<stop offset="1" style="stop-color:#087CFA"/> | |||
</linearGradient> | |||
<path class="st6" d="M53.2,20.3l-6.3-5L50,9.5l9,3.5L53.2,20.3z"/> | |||
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-179.4619" y1="417.3121" x2="-178.2529" y2="417.7431" gradientTransform="matrix(16.546 0 0 -25.676 3025.4089 10732.9629)"> | |||
<stop offset="0" style="stop-color:#F97A12"/> | |||
<stop offset="7.000000e-02" style="stop-color:#CB7A3E"/> | |||
<stop offset="0.15" style="stop-color:#9E7B6A"/> | |||
<stop offset="0.24" style="stop-color:#757B91"/> | |||
<stop offset="0.33" style="stop-color:#537BB1"/> | |||
<stop offset="0.43" style="stop-color:#387CCC"/> | |||
<stop offset="0.54" style="stop-color:#237CE0"/> | |||
<stop offset="0.66" style="stop-color:#147CEF"/> | |||
<stop offset="0.79" style="stop-color:#0B7CF7"/> | |||
<stop offset="1" style="stop-color:#087CFA"/> | |||
</linearGradient> | |||
<path class="st7" d="M72.7,7l-0.5,15.1l-10,4l-6-3.9L65,13l-3.9-8.5l3.5-4.2L72.7,7z"/> | |||
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-174.1182" y1="407.7607" x2="-174.5982" y2="406.7177" gradientTransform="matrix(11.59 0 0 -15.95 2083.77 6512.9512)"> | |||
<stop offset="0" style="stop-color:#FE315D"/> | |||
<stop offset="8.000000e-02" style="stop-color:#CB417E"/> | |||
<stop offset="0.16" style="stop-color:#9E4E9B"/> | |||
<stop offset="0.25" style="stop-color:#755BB4"/> | |||
<stop offset="0.34" style="stop-color:#5365CA"/> | |||
<stop offset="0.44" style="stop-color:#386DDB"/> | |||
<stop offset="0.54" style="stop-color:#2374E9"/> | |||
<stop offset="0.66" style="stop-color:#1478F3"/> | |||
<stop offset="0.79" style="stop-color:#0B7BF8"/> | |||
<stop offset="1" style="stop-color:#087CFA"/> | |||
</linearGradient> | |||
<path class="st8" d="M72.7,7l-7.9,9.4L61.1,4.6l3.5-4.2L72.7,7z"/> | |||
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-181.3264" y1="417.0558" x2="-180.4914" y2="418.1408" gradientTransform="matrix(20.013 0 0 -25.452 3678.0662 10635.3623)"> | |||
<stop offset="0" style="stop-color:#FE315D"/> | |||
<stop offset="4.000000e-02" style="stop-color:#F63462"/> | |||
<stop offset="0.1" style="stop-color:#DF3A71"/> | |||
<stop offset="0.17" style="stop-color:#C24383"/> | |||
<stop offset="0.29" style="stop-color:#AD4A91"/> | |||
<stop offset="0.55" style="stop-color:#755BB4"/> | |||
<stop offset="0.92" style="stop-color:#1D76ED"/> | |||
<stop offset="1" style="stop-color:#087CFA"/> | |||
</linearGradient> | |||
<path class="st9" d="M59.1,21.7l-10.5,3.8l1.7-5.9l2.2-7.2l-6-2L50.3,0l8.2,1l8,9.2L59.1,21.7z"/> | |||
<path d="M51.7,5h16.1v16.1H51.7L51.7,5z"/> | |||
<path class="st5" d="M53.2,18.1h6v1h-6V18.1z M57.5,8.3V7.1h-3.4v1.2h1v4.2h-1v1.2h3.4v-1.2h-0.9V8.3L57.5,8.3z M60.7,13.9 | |||
c-0.5,0-0.9-0.1-1.3-0.3c-0.3-0.2-0.6-0.4-0.9-0.7l0.9-1c0.2,0.2,0.3,0.4,0.6,0.5c0.2,0.1,0.4,0.2,0.6,0.2c0.2,0,0.5-0.1,0.7-0.3 | |||
c0.2-0.3,0.3-0.6,0.2-0.9V7.1h1.5v4.4c0,0.4,0,0.7-0.1,1c-0.1,0.3-0.3,0.5-0.5,0.7c-0.2,0.2-0.5,0.4-0.7,0.4 | |||
C61.4,13.8,61.1,13.9,60.7,13.9"/> | |||
</g> | |||
<g> | |||
<path class="st10" d="M111.9,0v22.5l-19.7-2.9l19.7,6.6l6.5-2.7V2.8L111.9,0z"/> | |||
<path class="st10" d="M99,12.7l6.1,6l3.6-1.5V5.4l-3.6-1.5l-6.1,6l-3.6-2.8l-1.5,0.6v7.3l1.5,0.5L99,12.7z M105.1,8.1v6.2l-4.1-3.1 | |||
L105.1,8.1z M95.4,9l2.2,2.2l-2.2,2.1V9z"/> | |||
</g> | |||
<g> | |||
<path class="st11" d="M158.5,0v22.5l-19.7-2.9l19.7,6.6l6.5-2.7V2.8L158.5,0z"/> | |||
<path class="st11" d="M151.7,3.9l-6.1,6L142,7.1l-1.5,0.5l3.7,3.6l-3.7,3.6l1.5,0.5l3.6-2.7l6.1,6l3.6-1.5V5.4L151.7,3.9z | |||
M151.7,8.1v6.2l-4.1-3.1L151.7,8.1z"/> | |||
</g> | |||
</svg> |
@@ -1,12 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36.129 30.884"> | |||
<defs> | |||
<style> | |||
.cls-1{fill:#fd6a00} | |||
</style> | |||
</defs> | |||
<rect class="cls-1" width="16.619" height="3.459" rx="1.73"/> | |||
<rect class="cls-1" width="23.604" height="3.459" rx="1.73" transform="translate(6.262 6.856)"/> | |||
<rect class="cls-1" width="19.51" height="3.459" rx="1.73" transform="translate(16.619 13.712)"/> | |||
<rect class="cls-1" width="23.604" height="3.459" rx="1.73" transform="translate(6.262 20.568)"/> | |||
<rect class="cls-1" width="16.619" height="3.459" rx="1.73" transform="translate(0 27.425)"/> | |||
</svg> |
@@ -1,3 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33.164 32.812"> | |||
<path fill="#fd6a00" stroke="#fd6a00" stroke-width="1.5" d="M11.236 32.046a.554.554 0 0 1-.188-.033A16.194 16.194 0 0 1 1.017 14.041 15.908 15.908 0 0 1 16.544.75a15.9 15.9 0 0 1 15.588 13.211 16.2 16.2 0 0 1-9.947 18.025.539.539 0 0 1-.695-.317l-3.739-9.668a.568.568 0 0 1 .011-.432.537.537 0 0 1 .314-.294 4.645 4.645 0 0 0 2.999-5.114 4.525 4.525 0 0 0-8.943-.128 4.651 4.651 0 0 0 2.854 5.2.539.539 0 0 1 .3.287.556.556 0 0 1 .012.422l-3.556 9.739a.543.543 0 0 1-.282.311.457.457 0 0 1-.222.056zM16.584 1.88A14.8 14.8 0 0 0 2.156 13.955a15.094 15.094 0 0 0 8.76 16.815l3.181-8.719a5.782 5.782 0 0 1-2.993-6.484 5.6 5.6 0 0 1 10.971.114 5.777 5.777 0 0 1-3.12 6.421l3.34 8.647a15.094 15.094 0 0 0 8.713-16.821A14.8 14.8 0 0 0 16.584 1.88z"/> | |||
</svg> |
@@ -1 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 4546 562.936"><defs><linearGradient id="a" x1=".5" y1=".119" x2=".5" y2=".948" gradientUnits="objectBoundingBox"><stop offset="0" stop-color="#fd6a00"/><stop offset="1" stop-color="#fdc300"/></linearGradient></defs><path data-name="Tracé 11995" d="M10512.121 9278.787c-593.871 86.795-566.679 69.7-996.97-151.515s-651.5-6.061-906.06-45.455S8247 8833 8247 8833h4546s-308.176 736.685-1056.637 524.575-630.371-165.583-1224.242-78.788z" transform="translate(-8247 -8833)" fill="url(#a)"/></svg> |
@@ -1,3 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 27.86 31.6"> | |||
<path fill="#fd6a00" d="M4.643 0A4.739 4.739 0 0 0 3.1 9.184v13.232A4.739 4.739 0 0 0 4.643 31.6a4.739 4.739 0 0 0 1.548-9.184V9.184A4.739 4.739 0 0 0 4.643 0zm10.835 0l-4.643 4.74 4.643 4.74V6.32h1.548a4.669 4.669 0 0 1 4.643 4.74v11.356a4.644 4.644 0 1 0 3.1 0V11.06a7.845 7.845 0 0 0-7.739-7.9h-1.552zM4.643 3.16a1.541 1.541 0 0 1 1.548 1.58 1.55 1.55 0 1 1-3.1 0 1.541 1.541 0 0 1 1.552-1.58zm0 22.12A1.58 1.58 0 1 1 3.1 26.86a1.541 1.541 0 0 1 1.543-1.58zm18.574 0a1.58 1.58 0 1 1-1.548 1.58 1.541 1.541 0 0 1 1.548-1.58z"/> | |||
</svg> |
@@ -1 +0,0 @@ | |||
<svg id="document" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34.625 32.632"><defs><style>.cls-1{fill:#fd6a00}</style></defs><g id="Groupe_7446" data-name="Groupe 7446" transform="translate(4.777)"><g id="Groupe_7445" data-name="Groupe 7445"><path id="Tracé_11906" data-name="Tracé 11906" class="cls-1" d="M74.735 19.652a3.977 3.977 0 0 0-3.951 3.988l-.144 20.68 2.155.016.144-20.687a1.8 1.8 0 0 1 1.8-1.8h21.655v-2.2z" transform="translate(-70.64 -19.652)"/></g></g><g id="Groupe_7448" data-name="Groupe 7448"><g id="Groupe_7447" data-name="Groupe 7447"><path id="Tracé_11907" data-name="Tracé 11907" class="cls-1" d="M30.531 19.652a4.143 4.143 0 0 0-4.095 4.18v23.209a2.982 2.982 0 1 1-5.962 0v-2.677a1.089 1.089 0 0 0-1.078-1.1H1.078A1.089 1.089 0 0 0 0 44.364v2.677a5.2 5.2 0 0 0 5.136 5.243v-2.2a3.016 3.016 0 0 1-2.981-3.043v-1.577h16.163v1.577a5.137 5.137 0 1 0 10.273 0v-17.2h4.957a1.089 1.089 0 0 0 1.078-1.1v-4.909a4.143 4.143 0 0 0-4.095-4.18zm1.94 7.993h-3.88v-3.813a1.94 1.94 0 1 1 3.879 0v3.813z" transform="translate(0 -19.652)"/></g></g><g id="Groupe_7450" data-name="Groupe 7450" transform="translate(4.921 30.432)"><g id="Groupe_7449" data-name="Groupe 7449"><path id="Rectangle_11314" data-name="Rectangle 11314" class="cls-1" d="M0 0h18.282v2.2H0z"/></g></g><g id="Groupe_7452" data-name="Groupe 7452" transform="translate(9.375 6.123)"><g id="Groupe_7451" data-name="Groupe 7451"><path id="Tracé_11908" data-name="Tracé 11908" class="cls-1" d="M145.267 108.349H139.7a1.1 1.1 0 0 0 0 2.2h5.567a1.1 1.1 0 0 0 0-2.2z" transform="translate(-138.622 -108.349)"/></g></g><g id="Groupe_7454" data-name="Groupe 7454" transform="translate(9.375 10.523)"><g id="Groupe_7453" data-name="Groupe 7453"><path id="Tracé_11909" data-name="Tracé 11909" class="cls-1" d="M151.732 172.083H139.7a1.1 1.1 0 0 0 0 2.2h12.033a1.1 1.1 0 0 0 0-2.2z" transform="translate(-138.622 -172.083)"/></g></g><g id="Groupe_7456" data-name="Groupe 7456" transform="translate(9.375 14.923)"><g id="Groupe_7455" data-name="Groupe 7455"><path id="Tracé_11910" data-name="Tracé 11910" class="cls-1" d="M151.732 235.817H139.7a1.1 1.1 0 0 0 0 2.2h12.033a1.1 1.1 0 0 0 0-2.2z" transform="translate(-138.622 -235.817)"/></g></g><g id="Groupe_7458" data-name="Groupe 7458" transform="translate(9.375 19.323)"><g id="Groupe_7457" data-name="Groupe 7457"><path id="Tracé_11911" data-name="Tracé 11911" class="cls-1" d="M151.732 299.552H139.7a1.1 1.1 0 0 0 0 2.2h12.033a1.1 1.1 0 0 0 0-2.2z" transform="translate(-138.622 -299.552)"/></g></g></svg> |
@@ -1,4 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.4 19.4"> | |||
<path fill="#8a8c8f" d="M18.832 0H5.191a.568.568 0 0 0-.568.568v8.526H.568A.568.568 0 0 0 0 9.662v9.17a.568.568 0 0 0 .568.568h9.17a.568.568 0 0 0 .568-.568v-4.055h8.525a.568.568 0 0 0 .568-.568V.568A.568.568 0 0 0 18.832 0zM9.17 18.263H1.137V10.23h3.486v3.979a.568.568 0 0 0 .568.568H9.17zm0-4.623H5.759v-3.41H9.17zm9.094 0h-7.958V9.662a.568.568 0 0 0-.568-.568H5.759V1.137h12.5z"/> | |||
<path fill="#8a8c8f" d="M17.126 2.84a.568.568 0 0 0-.568-.567h-3.415a.5685.5685 0 0 0 0 1.137h2.038l-3.577 3.577a.568.568 0 1 0 .8.8l3.577-3.577v2.038a.5685.5685 0 0 0 1.137 0V2.84z"/> | |||
</svg> |
@@ -1,3 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 84.346 22"> | |||
<path fill="#070706" d="M.532 14.094a5.73 5.73 0 0 0 2.508.7c.893 0 1.254-.3 1.254-.779s-.285-.7-1.387-1.083C.969 12.289.209 11.227.247 10.105c0-1.748 1.501-3.078 3.818-3.078a6.261 6.261 0 0 1 2.641.532l-.513 2.014a4.65 4.65 0 0 0-2.033-.532c-.7 0-1.121.285-1.121.76 0 .437.361.665 1.52 1.083 1.786.608 2.527 1.52 2.546 2.907 0 1.748-1.387 3.04-4.065 3.04A6.751 6.751 0 0 1 0 16.184zm16.869-2.261a4.711 4.711 0 0 1-4.958 5.015 4.61 4.61 0 0 1-4.863-4.844 4.687 4.687 0 0 1 5.015-4.977 4.587 4.587 0 0 1 4.806 4.806zm-6.8.095c0 1.615.665 2.831 1.919 2.831 1.14 0 1.862-1.14 1.862-2.831 0-1.406-.532-2.831-1.862-2.831-1.407.02-1.919 1.463-1.919 2.83zm7.845-1.691c0-1.178-.038-2.166-.076-3h2.527l.133 1.29h.057a3.459 3.459 0 0 1 2.907-1.5c1.919 0 3.362 1.273 3.362 4.027v5.566H24.43v-5.186c0-1.216-.418-2.033-1.482-2.033a1.558 1.558 0 0 0-1.482 1.1 1.984 1.984 0 0 0-.114.722v5.414h-2.906zm15.805 6.402l-.171-.95h-.057a3.413 3.413 0 0 1-2.7 1.159 2.888 2.888 0 0 1-3.04-2.888c0-2.432 2.185-3.609 5.509-3.59v-.133c0-.494-.266-1.216-1.71-1.216a5.3 5.3 0 0 0-2.584.7l-.532-1.881a7.787 7.787 0 0 1 3.651-.813c3.134 0 4.122 1.843 4.122 4.046v3.267a14.661 14.661 0 0 0 .133 2.28H34.25zm-.342-4.445c-1.539-.019-2.736.342-2.736 1.482a1.057 1.057 0 0 0 1.159 1.121 1.594 1.594 0 0 0 1.52-1.083 2.07 2.07 0 0 0 .057-.494zm4.389-1.862c0-1.387-.038-2.28-.076-3.1h2.508l.095 1.729h.076a2.745 2.745 0 0 1 2.526-1.934 2.976 2.976 0 0 1 .608.038V9.82a4.139 4.139 0 0 0-.779-.076 1.861 1.861 0 0 0-1.994 1.483 3.406 3.406 0 0 0-.057.646v4.768h-2.926v-6.309zm13.374 5.966a6.261 6.261 0 0 1-2.66.532 4.418 4.418 0 0 1-4.635-4.749 4.721 4.721 0 0 1 5-4.939 5.617 5.617 0 0 1 2.337.475l-.38 1.311a3.96 3.96 0 0 0-1.957-.437 3.221 3.221 0 0 0-3.286 3.514 3.192 3.192 0 0 0 3.229 3.476 4.846 4.846 0 0 0 2.071-.456zM52.887 3h1.691v13.64h-1.691zm12.177 8.909a4.543 4.543 0 0 1-4.635 4.939c-2.508 0-4.445-1.843-4.445-4.787 0-3.115 2.033-4.939 4.616-4.939 2.659.019 4.464 1.957 4.464 4.787zm-7.371.095c0 2.033 1.178 3.571 2.831 3.571 1.615 0 2.83-1.52 2.83-3.609 0-1.577-.779-3.571-2.773-3.571s-2.888 1.842-2.888 3.609zm16.509 2.109c0 .95.019 1.8.076 2.527h-1.5l-.095-1.52h-.038a3.515 3.515 0 0 1-3.079 1.73c-1.463 0-3.211-.8-3.211-4.065V7.35h1.691v5.148c0 1.767.532 2.964 2.071 2.964a2.439 2.439 0 0 0 2.223-1.539 2.474 2.474 0 0 0 .152-.874V7.35h1.691v6.763zM84.27 3v11.246c0 .817.019 1.767.076 2.394h-1.52l-.076-1.615h-.038a3.421 3.421 0 0 1-3.173 1.824c-2.242 0-3.97-1.9-3.97-4.73-.019-3.1 1.9-5 4.16-5a3.114 3.114 0 0 1 2.812 1.425h.038V3zm-1.691 8.131a2.952 2.952 0 0 0-.076-.7 2.477 2.477 0 0 0-2.433-1.96c-1.748 0-2.792 1.539-2.792 3.59 0 1.881.931 3.438 2.754 3.438a2.516 2.516 0 0 0 2.47-2.014 2.9 2.9 0 0 0 .076-.722z"/> | |||
</svg> |
@@ -1,15 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-276.765 -4280.348 36.674 37.341"> | |||
<defs> | |||
<style> | |||
.cls-4{fill:none}.cls-3{stroke:none} | |||
</style> | |||
</defs> | |||
<g fill="none" stroke="#434447" stroke-width="1.5" transform="translate(-276.765 -4274.167)"> | |||
<rect width="31.16" height="31.16" class="cls-3" rx="3"/> | |||
<rect width="29.66" height="29.66" x=".75" y=".75" class="cls-4" rx="2.25"/> | |||
</g> | |||
<g fill="#fff" stroke="#f3702a" stroke-width="2" transform="translate(-254.76 -4280.348)"> | |||
<circle cx="7.335" cy="7.335" r="7.335" class="cls-3"/> | |||
<circle cx="7.335" cy="7.335" r="6.335" class="cls-4"/> | |||
</g> | |||
</svg> |
@@ -1,4 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 67.01 22"> | |||
<path fill="#1b171b" d="M.532 14.067a5.726 5.726 0 0 0 2.506.7c.892 0 1.253-.3 1.253-.778s-.286-.701-1.391-1.084C.968 12.263.209 11.205.247 10.08c0-1.746 1.5-3.075 3.816-3.075a6.256 6.256 0 0 1 2.639.532l-.513 2.012a4.647 4.647 0 0 0-2.031-.532c-.7 0-1.12.285-1.12.759 0 .437.361.664 1.519 1.082 1.784.607 2.525 1.519 2.544 2.9-.001 1.747-1.387 3.047-4.064 3.047A6.746 6.746 0 0 1 0 16.155zm16.856-2.243a4.708 4.708 0 0 1-4.955 5.012 4.607 4.607 0 0 1-4.86-4.841 4.684 4.684 0 0 1 5.013-4.971 4.563 4.563 0 0 1 4.802 4.8zm-6.8.095c0 1.614.664 2.828 1.917 2.828 1.139 0 1.86-1.139 1.86-2.828 0-1.4-.532-2.828-1.86-2.828-1.4.002-1.913 1.445-1.913 2.833zm7.845-1.687c0-1.177-.038-2.164-.076-3h2.525l.133 1.291h.057a3.456 3.456 0 0 1 2.9-1.5c1.917 0 3.36 1.272 3.36 4.024v5.562h-2.923v-5.185c0-1.215-.418-2.031-1.481-2.031a1.557 1.557 0 0 0-1.481 1.1 1.983 1.983 0 0 0-.114.721v5.41h-2.9zm15.794 6.397l-.171-.949h-.057a3.41 3.41 0 0 1-2.7 1.158 2.886 2.886 0 0 1-3.037-2.885c0-2.43 2.183-3.607 5.505-3.588v-.133c0-.494-.266-1.215-1.708-1.215a5.3 5.3 0 0 0-2.582.7l-.532-1.879a7.782 7.782 0 0 1 3.645-.816c3.132 0 4.119 1.841 4.119 4.043v3.265a14.649 14.649 0 0 0 .133 2.278h-2.62zm-.342-4.442c-1.538-.019-2.734.342-2.734 1.481a1.056 1.056 0 0 0 1.158 1.12 1.592 1.592 0 0 0 1.519-1.082 2.069 2.069 0 0 0 .057-.494zm4.385-1.863c0-1.386-.038-2.278-.076-3.094H40.7l.095 1.727h.076a2.743 2.743 0 0 1 2.523-1.933 2.974 2.974 0 0 1 .607.038v2.753a4.136 4.136 0 0 0-.778-.076 1.86 1.86 0 0 0-1.993 1.481 3.4 3.4 0 0 0-.057.645v4.765H38.25v-6.306zM45.028 3h1.69v13.63h-1.69zm5.638 1.727a1.054 1.054 0 0 1-2.107 0 1.038 1.038 0 0 1 1.063-1.063 1.011 1.011 0 0 1 1.044 1.063zm-1.879 11.9v-9.3h1.689v9.283h-1.689zm3.72-6.774c0-.949-.019-1.746-.076-2.506h1.5l.095 1.538h.038a3.4 3.4 0 0 1 3.075-1.746c1.291 0 3.284.759 3.284 3.948v5.543h-1.692v-5.354c0-1.5-.551-2.753-2.145-2.753a2.373 2.373 0 0 0-2.255 1.728 2.4 2.4 0 0 0-.114.778v5.581h-1.69V9.853zm11.845-5.182v2.658h2.411V8.62h-2.411v5.011c0 1.158.323 1.8 1.272 1.8a3.887 3.887 0 0 0 .987-.114l.076 1.272a4.13 4.13 0 0 1-1.5.228 2.358 2.358 0 0 1-1.822-.7 3.458 3.458 0 0 1-.645-2.411V8.619h-1.443v-1.29h1.443V5.108z"/> | |||
<path fill="#cc202a" fill-rule="evenodd" d="M66.82 21.736a1.594 1.594 0 0 1-1.044-.59 1.844 1.844 0 0 0-1.348-.759 1.877 1.877 0 0 0-1.348.759 1.854 1.854 0 0 1-2.828 0 1.8 1.8 0 0 0-2.753 0 2.7 2.7 0 0 1-.7.607 3.029 3.029 0 0 1-.437.19c-.683.247-1.31-.361-1.69-.816a1.791 1.791 0 0 0-2.734 0 2.061 2.061 0 0 1-3.075.171 1.186 1.186 0 0 0-.19-.418 1.277 1.277 0 0 0-.266-.285c-.664-.57-1.614.019-2.05.551a1.618 1.618 0 0 1-1.253.626.174.174 0 0 1-.114-.076c-.019-.038-.057-.057-.076-.114a.171.171 0 0 1-.019-.095.778.778 0 0 1-.019-.209.462.462 0 0 1 .057-.209.448.448 0 0 1 .114-.171c.057-.038.209-.209.285-.247a2.2 2.2 0 0 0 .38-.456c.721-.816 2.43-1.519 3.3-.513.114.133.209.247.323.38.323.361.873.93 1.424.607a1.72 1.72 0 0 0 .3-.209c.209-.209.4-.456.589-.683a2.443 2.443 0 0 1 1.9-.626 1.475 1.475 0 0 1 1.139.456c.4.456 1.025 1.082 1.727.816a1.356 1.356 0 0 0 .285-.152c.114-.076.228-.152.323-.228l.342-.342a1.807 1.807 0 0 1 2.772-.076c.456.551 1.386 1.31 2.164.759a3.884 3.884 0 0 0 .664-.7 2 2 0 0 1 1.481-.74.323.323 0 0 1 .133.019 3.056 3.056 0 0 1 1.5.968c.19.209.569.721.778.968.114.19.152.171.152.361v.057a.282.282 0 0 1-.019.114c0 .038-.019.114-.019.152-.017.063-.055.153-.15.153z"/> | |||
</svg> |
@@ -1 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 4654 2264"><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="499.375" y1="1043.472" x2="1164.943" y2="1939.597" gradientTransform="matrix(1 0 0 -1 0 2264)"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#f8f8f9"/></linearGradient><path d="M1461.5 149.4C1403.1 91.3 1338.4 41.2 1268.4 0H285.1C215.1 41.2 150.4 91.3 92 149.4 1.8 239.3-69.1 344.2-118.9 461.2-170.8 583.3-197 713.2-197 847s26.2 263.7 78.1 385.8c49.7 117 120.6 221.9 210.9 311.8 89.5 89.1 193.4 158.9 309 207.7 119.1 50.1 245.5 75.7 375.7 75.7s256.5-25.4 375.7-75.7c115.6-48.7 219.6-118.6 309-207.7 90.2-89.8 161.2-194.7 210.9-311.8 51.9-122.1 78.1-252 78.1-385.8s-26.2-263.7-78.1-385.8c-49.7-117-120.6-221.9-210.8-311.8zm28.8 988.8c-38.3 90-93.2 171.2-163.4 241-71 70.6-153.7 126.2-246 165.1-96.2 40.5-198.4 61.1-304 61.1s-207.9-20.6-304-61.1c-92.3-38.9-175.1-94.4-246-165.1-70.2-69.9-125.1-151-163.4-241C24.1 1045.9 4.2 948 4.2 847s19.9-198.9 59-291.2c38.3-90 93.2-171.2 163.4-241 71-70.6 153.7-126.2 246-165.1 96.2-40.5 198.4-61.1 304-61.1s207.9 20.6 304 61.1c92.3 38.9 175.1 94.4 246 165.1 70.2 69.9 125.1 151 163.4 241 39.2 92.3 59 190.3 59 291.2s-19.6 198.9-58.7 291.2z" fill="url(#a)"/><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="3828.883" y1="1759.166" x2="3080.553" y2="1407.541" gradientTransform="matrix(1 0 0 -1 0 2264)"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#f8f8f9"/></linearGradient><path d="M4683.7 0H4458c187.3 355.4 121.9 776.4-165.1 973.8-310.4 213.4-764.3 85.3-1011.8-285.4C3135.5 470.2 3093.3 215.9 3146.5 0h-208.9c-4.2 22.3-7.7 44.8-10.4 67.8-14.5 123-6.3 248.7 24.4 373.5 31.5 128.5 85.6 250.6 160.6 363.1s166.8 208.6 272.7 286c102.9 75.2 214.9 129.6 332.8 161.5 78.7 21.3 157.4 32.1 235.3 32.1 40.2 0 80.1-2.8 119.7-8.5 121.7-17.6 234.2-61.4 334.6-130.4 100.3-69 182.3-158.8 243.5-266.9 58.5-103.3 95.6-218.8 110.2-343.2 14.5-123 6.3-248.7-24.4-373.5-13.6-55.1-31.3-109-52.9-161.5z" fill="url(#b)"/></svg> |
@@ -1,9 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14.5 15.117"> | |||
<defs> | |||
<style> | |||
.cls-1{fill:#8a8c8f} | |||
</style> | |||
</defs> | |||
<path d="M7.25 15.117A7.149 7.149 0 0 1 0 8.09a6.973 6.973 0 0 1 4.075-6.321.63.63 0 0 1 .54 1.138A5.722 5.722 0 0 0 1.261 8.09a5.992 5.992 0 0 0 11.976 0 5.777 5.777 0 0 0-3.461-5.229.62911.62911 0 1 1 .515-1.148A7.035 7.035 0 0 1 14.5 8.09a7.149 7.149 0 0 1-7.25 7.028z" class="cls-1"/> | |||
<path d="M7.25 8.543a.628.628 0 0 1-.629-.629V.629a.6295.6295 0 0 1 1.259 0v7.284a.628.628 0 0 1-.63.63z" class="cls-1"/> | |||
</svg> |
@@ -1 +0,0 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-557.666 -3550.073 61.865 62.081"><defs><style>.cls-1{fill:#0078d7}</style></defs><g id="Groupe_6141" data-name="Groupe 6141" transform="translate(-557.666 -3550.073)"><path id="path951_1_" class="cls-1" d="M46.453 0v53.28L0 46.453l46.453 15.628L61.865 55.7V6.611z"/><path id="Tracé_10734" data-name="Tracé 10734" class="cls-1" d="M22.239 84.1V72.318l31.026-6.107v21.85l-8.758 7.26-13.367-4.48v4.609l-8.9-11.35 21.476 2.809v-19L33.445 59.7l.072 3.731L21.3 68.314l-3.8 4.552v10.24z" transform="translate(-14.979 -51.101)"/></g></svg> |
@@ -1 +0,0 @@ | |||
<svg viewBox="0 0 38 38" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path fill="#ff3d00" d="M0 0h17.5v17.5H0z"/><path fill="#00a6f6" d="M0 20.5h17.5V38H0z"/><path fill="#69bd00" d="M20.5 0H38v17.5H20.5z"/><path fill="#ffb600" d="M20.5 20.5H38V38H20.5z"/></svg> |
@@ -0,0 +1,16 @@ | |||
<svg width="62" height="76" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:xlink="http://www.w3.org/1999/xlink"> | |||
<defs> | |||
<path id="a" d="M0 76h62V0H0z"/> | |||
</defs> | |||
<g fill="none" fill-rule="evenodd"> | |||
<path d="M24 37v4.667c0 .597.244 1.194.733 1.65A2.584 2.584 0 0 0 26.5 44c.64 0 1.279-.227 1.767-.684a2.246 2.246 0 0 0 .733-1.65V37" stroke="#236A97" stroke-width="2"/> | |||
<path d="M28 37v5.714c0 .585.244 1.17.733 1.616.488.447 1.127.67 1.767.67.64 0 1.279-.223 1.767-.67A2.18 2.18 0 0 0 33 42.714V37M33 36.53v14.117c0 .602.244 1.205.733 1.664.488.46 1.127.689 1.767.689.64 0 1.279-.23 1.767-.69A2.273 2.273 0 0 0 38 50.648V33" stroke="#236A97" stroke-width="2"/> | |||
<path d="M23.8 36.958v3.625c0 .619-.234 1.238-.703 1.709A2.382 2.382 0 0 1 21.4 43a2.382 2.382 0 0 1-1.697-.708A2.414 2.414 0 0 1 19 40.583V23.667L21.4 14h16.8v3.625l4.8 8.458v7.25c0 .619-.234 1.238-.703 1.709a2.382 2.382 0 0 1-1.697.708 2.382 2.382 0 0 1-1.697-.708 2.414 2.414 0 0 1-.703-1.709V28.5M40 0v14H19V0M36 10V8M56 47V29M60 41l-4.5 5-4.5-5M56 26v-2M56 21v-2M6 47V29M10 41l-4.5 5L1 41M6 26v-2M6 21v-2M41.8 54h18c.307 0 .614.114.848.342.234.227.352.526.352.825v18.666c0 .299-.118.598-.352.825A1.214 1.214 0 0 1 59.8 75H2.2c-.307 0-.614-.114-.848-.342A1.147 1.147 0 0 1 1 73.833V55.167c0-.299.118-.598.352-.825.234-.228.54-.342.848-.342h27.6M25 64h2M30 64h2M35 64h2" stroke="#236A97" stroke-width="2"/> | |||
<mask id="b" fill="#fff"> | |||
<use xlink:href="#a"/> | |||
</mask> | |||
<path stroke="#236A97" stroke-width="2" mask="url(#b)" d="M6 70h50V58H6z"/> | |||
</g> | |||
</svg> |
@@ -37,7 +37,6 @@ interface Props extends Pick<WithRouterProps, 'router' | 'location'> { | |||
interface State { | |||
almBinding?: AlmSettingsInstance; | |||
baseUrl: string; | |||
forceManual: boolean; | |||
loading: boolean; | |||
} | |||
@@ -45,7 +44,6 @@ export class TutorialSelection extends React.PureComponent<Props, State> { | |||
mounted = false; | |||
state: State = { | |||
baseUrl: getHostUrl(), | |||
forceManual: true, | |||
loading: true | |||
}; | |||
@@ -66,16 +64,14 @@ export class TutorialSelection extends React.PureComponent<Props, State> { | |||
fetchAlmBindings = async () => { | |||
const { component, projectBinding } = this.props; | |||
if (projectBinding === undefined) { | |||
this.setState({ forceManual: true }); | |||
} else { | |||
if (projectBinding !== undefined) { | |||
const almSettings = await getAlmSettingsNoCatch(component.key).catch(() => undefined); | |||
if (this.mounted) { | |||
let almBinding; | |||
if (almSettings !== undefined) { | |||
almBinding = almSettings.find(d => d.key === projectBinding.key); | |||
} | |||
this.setState({ almBinding, forceManual: false }); | |||
this.setState({ almBinding }); | |||
} | |||
} | |||
}; | |||
@@ -102,11 +98,9 @@ export class TutorialSelection extends React.PureComponent<Props, State> { | |||
render() { | |||
const { component, currentUser, location, projectBinding } = this.props; | |||
const { almBinding, baseUrl, forceManual, loading } = this.state; | |||
const { almBinding, baseUrl, loading } = this.state; | |||
const selectedTutorial: TutorialModes | undefined = forceManual | |||
? TutorialModes.Manual | |||
: location.query?.selectedTutorial; | |||
const selectedTutorial: TutorialModes | undefined = location.query?.selectedTutorial; | |||
return ( | |||
<TutorialSelectionRenderer |
@@ -55,14 +55,24 @@ export default function TutorialSelectionRenderer(props: TutorialSelectionRender | |||
return <i className="spinner" />; | |||
} | |||
const isAzureAvailable = | |||
projectBinding && [AlmKeys.Azure, AlmKeys.GitHub].includes(projectBinding.alm); | |||
const jenkinsAvailable = | |||
projectBinding && | |||
[AlmKeys.BitbucketCloud, AlmKeys.BitbucketServer, AlmKeys.GitHub, AlmKeys.GitLab].includes( | |||
projectBinding.alm | |||
); | |||
let showGitHubActions = true; | |||
let showGitLabCICD = true; | |||
let showBitbucketPipelines = true; | |||
let showAzurePipelines = true; | |||
let showJenkins = true; | |||
if (projectBinding !== undefined) { | |||
showGitHubActions = projectBinding.alm === AlmKeys.GitHub; | |||
showGitLabCICD = projectBinding.alm === AlmKeys.GitLab; | |||
showBitbucketPipelines = projectBinding?.alm === AlmKeys.BitbucketCloud; | |||
showAzurePipelines = [AlmKeys.Azure, AlmKeys.GitHub].includes(projectBinding.alm); | |||
showJenkins = [ | |||
AlmKeys.BitbucketCloud, | |||
AlmKeys.BitbucketServer, | |||
AlmKeys.GitHub, | |||
AlmKeys.GitLab | |||
].includes(projectBinding.alm); | |||
} | |||
return ( | |||
<> | |||
@@ -75,72 +85,86 @@ export default function TutorialSelectionRenderer(props: TutorialSelectionRender | |||
</header> | |||
<div className="display-flex-justify-center"> | |||
{projectBinding?.alm === AlmKeys.GitHub && ( | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-manual" | |||
onClick={() => props.onSelectTutorial(TutorialModes.Manual)} | |||
type="button"> | |||
<img | |||
alt="" // Should be ignored by screen readers | |||
height={80} | |||
src={`${getBaseUrl()}/images/tutorials/manual.svg`} | |||
/> | |||
<div className="medium big-spacer-top"> | |||
{translate('onboarding.tutorial.choose_method.manual')} | |||
</div> | |||
</button> | |||
{showAzurePipelines && ( | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-github" | |||
onClick={() => props.onSelectTutorial(TutorialModes.GitHubActions)} | |||
className="button button-huge display-flex-column spacer-left spacer-right azure-pipelines" | |||
onClick={() => props.onSelectTutorial(TutorialModes.AzurePipelines)} | |||
type="button"> | |||
<img | |||
alt="" // Should be ignored by screen readers | |||
height={64} | |||
className="spacer-bottom spacer-top" | |||
src={`${getBaseUrl()}/images/tutorials/github-actions.svg`} | |||
height={80} | |||
src={`${getBaseUrl()}/images/tutorials/azure-pipelines.svg`} | |||
/> | |||
<div className="medium big-spacer-top"> | |||
{translate('onboarding.tutorial.choose_method.github_action')} | |||
{translate('onboarding.tutorial.choose_method.azure_pipelines')} | |||
</div> | |||
</button> | |||
)} | |||
{projectBinding?.alm === AlmKeys.GitLab && ( | |||
{showBitbucketPipelines && ( | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-gitlab" | |||
onClick={() => props.onSelectTutorial(TutorialModes.GitLabCI)} | |||
className="button button-huge display-flex-column spacer-left spacer-right bitbucket-pipelines" | |||
onClick={() => props.onSelectTutorial(TutorialModes.BitbucketPipelines)} | |||
type="button"> | |||
<img | |||
alt="" // Should be ignored by screen readers | |||
height={80} | |||
src={`${getBaseUrl()}/images/alm/gitlab.svg`} | |||
src={`${getBaseUrl()}/images/alm/bitbucket.svg`} | |||
/> | |||
<div className="medium big-spacer-top"> | |||
{translate('onboarding.tutorial.choose_method.gitlab_ci')} | |||
{translate('onboarding.tutorial.choose_method.bitbucket_pipelines')} | |||
</div> | |||
</button> | |||
)} | |||
{isAzureAvailable && ( | |||
{showGitHubActions && ( | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right azure-pipelines" | |||
onClick={() => props.onSelectTutorial(TutorialModes.AzurePipelines)} | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-github" | |||
onClick={() => props.onSelectTutorial(TutorialModes.GitHubActions)} | |||
type="button"> | |||
<img | |||
alt="" // Should be ignored by screen readers | |||
height={80} | |||
src={`${getBaseUrl()}/images/tutorials/azure-pipelines.svg`} | |||
height={64} | |||
className="spacer-bottom spacer-top" | |||
src={`${getBaseUrl()}/images/tutorials/github-actions.svg`} | |||
/> | |||
<div className="medium big-spacer-top"> | |||
{translate('onboarding.tutorial.choose_method.azure_pipelines')} | |||
{translate('onboarding.tutorial.choose_method.github_action')} | |||
</div> | |||
</button> | |||
)} | |||
{projectBinding?.alm === AlmKeys.BitbucketCloud && ( | |||
{showGitLabCICD && ( | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right bitbucket-pipelines" | |||
onClick={() => props.onSelectTutorial(TutorialModes.BitbucketPipelines)} | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-gitlab" | |||
onClick={() => props.onSelectTutorial(TutorialModes.GitLabCI)} | |||
type="button"> | |||
<img | |||
alt="" // Should be ignored by screen readers | |||
height={80} | |||
src={`${getBaseUrl()}/images/alm/bitbucket.svg`} | |||
src={`${getBaseUrl()}/images/alm/gitlab.svg`} | |||
/> | |||
<div className="medium big-spacer-top"> | |||
{translate('onboarding.tutorial.choose_method.bitbucket_pipelines')} | |||
{translate('onboarding.tutorial.choose_method.gitlab_ci')} | |||
</div> | |||
</button> | |||
)} | |||
{jenkinsAvailable && ( | |||
{showJenkins && ( | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-jenkins" | |||
onClick={() => props.onSelectTutorial(TutorialModes.Jenkins)} | |||
@@ -155,20 +179,6 @@ export default function TutorialSelectionRenderer(props: TutorialSelectionRender | |||
</div> | |||
</button> | |||
)} | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-manual" | |||
onClick={() => props.onSelectTutorial(TutorialModes.Manual)} | |||
type="button"> | |||
<img | |||
alt="" // Should be ignored by screen readers | |||
height={80} | |||
src={`${getBaseUrl()}/images/sonarcloud/analysis/manual.svg`} | |||
/> | |||
<div className="medium big-spacer-top"> | |||
{translate('onboarding.tutorial.choose_method.manual')} | |||
</div> | |||
</button> | |||
</div> | |||
</div> | |||
)} | |||
@@ -177,7 +187,7 @@ export default function TutorialSelectionRenderer(props: TutorialSelectionRender | |||
<ManualTutorial component={component} currentUser={currentUser} /> | |||
)} | |||
{selectedTutorial === TutorialModes.BitbucketPipelines && projectBinding !== undefined && ( | |||
{selectedTutorial === TutorialModes.BitbucketPipelines && ( | |||
<BitbucketPipelinesTutorial | |||
almBinding={almBinding} | |||
baseUrl={baseUrl} | |||
@@ -187,7 +197,7 @@ export default function TutorialSelectionRenderer(props: TutorialSelectionRender | |||
/> | |||
)} | |||
{selectedTutorial === TutorialModes.GitHubActions && projectBinding !== undefined && ( | |||
{selectedTutorial === TutorialModes.GitHubActions && ( | |||
<GitHubActionTutorial | |||
almBinding={almBinding} | |||
baseUrl={baseUrl} | |||
@@ -197,7 +207,7 @@ export default function TutorialSelectionRenderer(props: TutorialSelectionRender | |||
/> | |||
)} | |||
{selectedTutorial === TutorialModes.Jenkins && projectBinding !== undefined && ( | |||
{selectedTutorial === TutorialModes.Jenkins && ( | |||
<JenkinsTutorial | |||
almBinding={almBinding} | |||
component={component} | |||
@@ -205,22 +215,12 @@ export default function TutorialSelectionRenderer(props: TutorialSelectionRender | |||
/> | |||
)} | |||
{selectedTutorial === TutorialModes.GitLabCI && projectBinding !== undefined && ( | |||
<GitLabCITutorial | |||
baseUrl={baseUrl} | |||
component={component} | |||
currentUser={currentUser} | |||
projectBinding={projectBinding} | |||
/> | |||
{selectedTutorial === TutorialModes.GitLabCI && ( | |||
<GitLabCITutorial baseUrl={baseUrl} component={component} currentUser={currentUser} /> | |||
)} | |||
{selectedTutorial === TutorialModes.AzurePipelines && projectBinding !== undefined && ( | |||
<AzurePipelinesTutorial | |||
baseUrl={baseUrl} | |||
component={component} | |||
currentUser={currentUser} | |||
projectBinding={projectBinding} | |||
/> | |||
{selectedTutorial === TutorialModes.AzurePipelines && ( | |||
<AzurePipelinesTutorial baseUrl={baseUrl} component={component} currentUser={currentUser} /> | |||
)} | |||
</> | |||
); |
@@ -55,18 +55,6 @@ it('should render correctly', () => { | |||
expect(shallowRender()).toMatchSnapshot(); | |||
}); | |||
it('should select manual if project is not bound', async () => { | |||
const wrapper = shallowRender(); | |||
await waitAndUpdate(wrapper); | |||
expect(wrapper.state().forceManual).toBe(true); | |||
}); | |||
it('should not select anything if project is bound', async () => { | |||
const wrapper = shallowRender({ projectBinding: mockProjectBitbucketBindingResponse() }); | |||
await waitAndUpdate(wrapper); | |||
expect(wrapper.state().forceManual).toBe(false); | |||
}); | |||
it('should correctly find the global ALM binding definition', async () => { | |||
const key = 'foo'; | |||
const almBinding = mockAlmSettingsInstance({ key }); |
@@ -36,6 +36,5 @@ exports[`should render correctly 1`] = ` | |||
} | |||
loading={true} | |||
onSelectTutorial={[Function]} | |||
selectedTutorial="manual" | |||
/> | |||
`; |
@@ -18,35 +18,35 @@ exports[`should render correctly for azure 1`] = ` | |||
className="display-flex-justify-center" | |||
> | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right azure-pipelines" | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-manual" | |||
onClick={[Function]} | |||
type="button" | |||
> | |||
<img | |||
alt="" | |||
height={80} | |||
src="/images/tutorials/azure-pipelines.svg" | |||
src="/images/tutorials/manual.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
> | |||
onboarding.tutorial.choose_method.azure_pipelines | |||
onboarding.tutorial.choose_method.manual | |||
</div> | |||
</button> | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-manual" | |||
className="button button-huge display-flex-column spacer-left spacer-right azure-pipelines" | |||
onClick={[Function]} | |||
type="button" | |||
> | |||
<img | |||
alt="" | |||
height={80} | |||
src="/images/sonarcloud/analysis/manual.svg" | |||
src="/images/tutorials/azure-pipelines.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
> | |||
onboarding.tutorial.choose_method.manual | |||
onboarding.tutorial.choose_method.azure_pipelines | |||
</div> | |||
</button> | |||
</div> | |||
@@ -72,35 +72,35 @@ exports[`should render correctly for bitbucket server 1`] = ` | |||
className="display-flex-justify-center" | |||
> | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-jenkins" | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-manual" | |||
onClick={[Function]} | |||
type="button" | |||
> | |||
<img | |||
alt="" | |||
height={80} | |||
src="/images/tutorials/jenkins.svg" | |||
src="/images/tutorials/manual.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
> | |||
onboarding.tutorial.choose_method.jenkins | |||
onboarding.tutorial.choose_method.manual | |||
</div> | |||
</button> | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-manual" | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-jenkins" | |||
onClick={[Function]} | |||
type="button" | |||
> | |||
<img | |||
alt="" | |||
height={80} | |||
src="/images/sonarcloud/analysis/manual.svg" | |||
src="/images/tutorials/jenkins.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
> | |||
onboarding.tutorial.choose_method.manual | |||
onboarding.tutorial.choose_method.jenkins | |||
</div> | |||
</button> | |||
</div> | |||
@@ -126,20 +126,19 @@ exports[`should render correctly for github 1`] = ` | |||
className="display-flex-justify-center" | |||
> | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-github" | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-manual" | |||
onClick={[Function]} | |||
type="button" | |||
> | |||
<img | |||
alt="" | |||
className="spacer-bottom spacer-top" | |||
height={64} | |||
src="/images/tutorials/github-actions.svg" | |||
height={80} | |||
src="/images/tutorials/manual.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
> | |||
onboarding.tutorial.choose_method.github_action | |||
onboarding.tutorial.choose_method.manual | |||
</div> | |||
</button> | |||
<button | |||
@@ -159,35 +158,36 @@ exports[`should render correctly for github 1`] = ` | |||
</div> | |||
</button> | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-jenkins" | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-github" | |||
onClick={[Function]} | |||
type="button" | |||
> | |||
<img | |||
alt="" | |||
height={80} | |||
src="/images/tutorials/jenkins.svg" | |||
className="spacer-bottom spacer-top" | |||
height={64} | |||
src="/images/tutorials/github-actions.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
> | |||
onboarding.tutorial.choose_method.jenkins | |||
onboarding.tutorial.choose_method.github_action | |||
</div> | |||
</button> | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-manual" | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-jenkins" | |||
onClick={[Function]} | |||
type="button" | |||
> | |||
<img | |||
alt="" | |||
height={80} | |||
src="/images/sonarcloud/analysis/manual.svg" | |||
src="/images/tutorials/jenkins.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
> | |||
onboarding.tutorial.choose_method.manual | |||
onboarding.tutorial.choose_method.jenkins | |||
</div> | |||
</button> | |||
</div> | |||
@@ -213,51 +213,51 @@ exports[`should render correctly for gitlab 1`] = ` | |||
className="display-flex-justify-center" | |||
> | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-gitlab" | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-manual" | |||
onClick={[Function]} | |||
type="button" | |||
> | |||
<img | |||
alt="" | |||
height={80} | |||
src="/images/alm/gitlab.svg" | |||
src="/images/tutorials/manual.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
> | |||
onboarding.tutorial.choose_method.gitlab_ci | |||
onboarding.tutorial.choose_method.manual | |||
</div> | |||
</button> | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-jenkins" | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-gitlab" | |||
onClick={[Function]} | |||
type="button" | |||
> | |||
<img | |||
alt="" | |||
height={80} | |||
src="/images/tutorials/jenkins.svg" | |||
src="/images/alm/gitlab.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
> | |||
onboarding.tutorial.choose_method.jenkins | |||
onboarding.tutorial.choose_method.gitlab_ci | |||
</div> | |||
</button> | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-manual" | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-jenkins" | |||
onClick={[Function]} | |||
type="button" | |||
> | |||
<img | |||
alt="" | |||
height={80} | |||
src="/images/sonarcloud/analysis/manual.svg" | |||
src="/images/tutorials/jenkins.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
> | |||
onboarding.tutorial.choose_method.manual | |||
onboarding.tutorial.choose_method.jenkins | |||
</div> | |||
</button> | |||
</div> | |||
@@ -300,16 +300,6 @@ exports[`should render correctly: azure pipelines tutorial 1`] = ` | |||
"scmAccounts": Array [], | |||
} | |||
} | |||
projectBinding={ | |||
Object { | |||
"alm": "azure", | |||
"key": "foo", | |||
"monorepo": false, | |||
"repository": "REPOSITORY_NAME", | |||
"slug": "PROJECT_NAME", | |||
"url": "https://ado.my_company.com/mycollection", | |||
} | |||
} | |||
/> | |||
</Fragment> | |||
`; | |||
@@ -402,15 +392,6 @@ exports[`should render correctly: gitlab tutorial 1`] = ` | |||
"scmAccounts": Array [], | |||
} | |||
} | |||
projectBinding={ | |||
Object { | |||
"alm": "gitlab", | |||
"key": "foo", | |||
"monorepo": true, | |||
"repository": "PROJECT_KEY", | |||
"url": "https://gitlab.com/api/v4", | |||
} | |||
} | |||
/> | |||
</Fragment> | |||
`; | |||
@@ -528,7 +509,7 @@ exports[`should render correctly: selection 1`] = ` | |||
<img | |||
alt="" | |||
height={80} | |||
src="/images/sonarcloud/analysis/manual.svg" | |||
src="/images/tutorials/manual.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
@@ -536,6 +517,87 @@ exports[`should render correctly: selection 1`] = ` | |||
onboarding.tutorial.choose_method.manual | |||
</div> | |||
</button> | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right azure-pipelines" | |||
onClick={[Function]} | |||
type="button" | |||
> | |||
<img | |||
alt="" | |||
height={80} | |||
src="/images/tutorials/azure-pipelines.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
> | |||
onboarding.tutorial.choose_method.azure_pipelines | |||
</div> | |||
</button> | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right bitbucket-pipelines" | |||
onClick={[Function]} | |||
type="button" | |||
> | |||
<img | |||
alt="" | |||
height={80} | |||
src="/images/alm/bitbucket.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
> | |||
onboarding.tutorial.choose_method.bitbucket_pipelines | |||
</div> | |||
</button> | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-github" | |||
onClick={[Function]} | |||
type="button" | |||
> | |||
<img | |||
alt="" | |||
className="spacer-bottom spacer-top" | |||
height={64} | |||
src="/images/tutorials/github-actions.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
> | |||
onboarding.tutorial.choose_method.github_action | |||
</div> | |||
</button> | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-gitlab" | |||
onClick={[Function]} | |||
type="button" | |||
> | |||
<img | |||
alt="" | |||
height={80} | |||
src="/images/alm/gitlab.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
> | |||
onboarding.tutorial.choose_method.gitlab_ci | |||
</div> | |||
</button> | |||
<button | |||
className="button button-huge display-flex-column spacer-left spacer-right tutorial-mode-jenkins" | |||
onClick={[Function]} | |||
type="button" | |||
> | |||
<img | |||
alt="" | |||
height={80} | |||
src="/images/tutorials/jenkins.svg" | |||
/> | |||
<div | |||
className="medium big-spacer-top" | |||
> | |||
onboarding.tutorial.choose_method.jenkins | |||
</div> | |||
</button> | |||
</div> | |||
</div> | |||
</Fragment> |
@@ -19,9 +19,10 @@ | |||
*/ | |||
import { | |||
mockAlmSettingsInstance, | |||
mockProjectBitbucketCloudBindingResponse, | |||
mockProjectGithubBindingResponse | |||
} from '../../../helpers/mocks/alm-settings'; | |||
import { buildGithubLink, getUniqueTokenName } from '../utils'; | |||
import { buildBitbucketCloudLink, buildGithubLink, getUniqueTokenName } from '../utils'; | |||
describe('getUniqueTokenName', () => { | |||
const initialTokenName = 'Analyze "lightsaber"'; | |||
@@ -70,3 +71,28 @@ describe('buildGithubLink', () => { | |||
expect(buildGithubLink(mockAlmSettingsInstance({ url: undefined }), projectBinding)).toBeNull(); | |||
}); | |||
}); | |||
describe('buildBitbucketCloudLink', () => { | |||
const projectBinding = mockProjectBitbucketCloudBindingResponse({ repository: 'reponame' }); | |||
it('should work', () => { | |||
expect( | |||
buildBitbucketCloudLink( | |||
mockAlmSettingsInstance({ url: 'http://bitbucket.org/workspace/' }), | |||
projectBinding | |||
) | |||
).toBe('http://bitbucket.org/workspace/reponame'); | |||
}); | |||
it('should return null if there is no url defined', () => { | |||
expect( | |||
buildBitbucketCloudLink(mockAlmSettingsInstance({ url: undefined }), projectBinding) | |||
).toBeNull(); | |||
expect( | |||
buildBitbucketCloudLink( | |||
mockAlmSettingsInstance(), | |||
mockProjectBitbucketCloudBindingResponse({ repository: undefined }) | |||
) | |||
).toBeNull(); | |||
}); | |||
}); |
@@ -19,13 +19,7 @@ | |||
*/ | |||
import * as React from 'react'; | |||
import { Button } from 'sonar-ui-common/components/controls/buttons'; | |||
import { Alert } from 'sonar-ui-common/components/ui/Alert'; | |||
import { translate } from 'sonar-ui-common/helpers/l10n'; | |||
import { | |||
isProjectAzureBindingResponse, | |||
isProjectGitHubBindingResponse, | |||
ProjectAlmBindingResponse | |||
} from '../../../types/alm-settings'; | |||
import Step from '../components/Step'; | |||
import BranchAnalysisStepContent from './BranchAnalysisStepContent'; | |||
import ExtensionInstallationStepContent from './ExtensionInstallationStepContent'; | |||
@@ -36,7 +30,6 @@ export interface AzurePipelinesTutorialProps { | |||
baseUrl: string; | |||
component: T.Component; | |||
currentUser: T.LoggedInUser; | |||
projectBinding: ProjectAlmBindingResponse; | |||
} | |||
export enum Steps { | |||
@@ -53,23 +46,11 @@ interface Step { | |||
} | |||
export default function AzurePipelinesTutorial(props: AzurePipelinesTutorialProps) { | |||
const { baseUrl, component, currentUser, projectBinding } = props; | |||
const { baseUrl, component, currentUser } = props; | |||
const [currentStep, setCurrentStep] = React.useState(Steps.ExtensionInstallation); | |||
const [isCurrentStepValid, setIsCurrentStepValid] = React.useState(false); | |||
// Failsafe; should never happen. | |||
if ( | |||
!isProjectAzureBindingResponse(projectBinding) && | |||
!isProjectGitHubBindingResponse(projectBinding) | |||
) { | |||
return ( | |||
<Alert variant="error"> | |||
{translate('onboarding.tutorial.with.azure_pipelines.unsupported')} | |||
</Alert> | |||
); | |||
} | |||
const steps: Array<Step> = [ | |||
{ step: Steps.ExtensionInstallation, content: <ExtensionInstallationStepContent /> }, | |||
{ |
@@ -21,11 +21,6 @@ import { shallow } from 'enzyme'; | |||
import * as React from 'react'; | |||
import { Button } from 'sonar-ui-common/components/controls/buttons'; | |||
import { click } from 'sonar-ui-common/helpers/testUtils'; | |||
import { | |||
mockProjectAzureBindingResponse, | |||
mockProjectGithubBindingResponse, | |||
mockProjectGitLabBindingResponse | |||
} from '../../../../helpers/mocks/alm-settings'; | |||
import { mockComponent, mockLoggedInUser } from '../../../../helpers/testMocks'; | |||
import Step from '../../components/Step'; | |||
import AzurePipelinesTutorial, { AzurePipelinesTutorialProps } from '../AzurePipelinesTutorial'; | |||
@@ -45,12 +40,6 @@ it('should render correctly', () => { | |||
.last() | |||
.dive() | |||
).toMatchSnapshot('last-step-wrapper'); | |||
expect(shallowRender({ projectBinding: mockProjectGithubBindingResponse() })).toMatchSnapshot( | |||
'for github' | |||
); | |||
expect(shallowRender({ projectBinding: mockProjectGitLabBindingResponse() })).toMatchSnapshot( | |||
'wrong alm' | |||
); | |||
}); | |||
it('should display the next step when one is finished', () => { | |||
@@ -108,7 +97,6 @@ function shallowRender(props: Partial<AzurePipelinesTutorialProps> = {}) { | |||
baseUrl="http://localhost:9000" | |||
component={mockComponent()} | |||
currentUser={mockLoggedInUser()} | |||
projectBinding={mockProjectAzureBindingResponse()} | |||
{...props} | |||
/> | |||
); |
@@ -86,56 +86,6 @@ exports[`should render correctly: first-step-wrapper 1`] = ` | |||
</div> | |||
`; | |||
exports[`should render correctly: for github 1`] = ` | |||
<Fragment> | |||
<div | |||
className="page-header big-spacer-bottom" | |||
> | |||
<h1 | |||
className="page-title" | |||
> | |||
onboarding.tutorial.with.azure_pipelines.title | |||
</h1> | |||
</div> | |||
<Step | |||
finished={false} | |||
key="0" | |||
onOpen={[Function]} | |||
open={true} | |||
renderForm={[Function]} | |||
stepNumber={1} | |||
stepTitle="onboarding.tutorial.with.azure_pipelines.ExtensionInstallation.title" | |||
/> | |||
<Step | |||
finished={false} | |||
key="1" | |||
onOpen={[Function]} | |||
open={false} | |||
renderForm={[Function]} | |||
stepNumber={2} | |||
stepTitle="onboarding.tutorial.with.azure_pipelines.ServiceEndpoint.title" | |||
/> | |||
<Step | |||
finished={false} | |||
key="2" | |||
onOpen={[Function]} | |||
open={false} | |||
renderForm={[Function]} | |||
stepNumber={3} | |||
stepTitle="onboarding.tutorial.with.azure_pipelines.BranchAnalysis.title" | |||
/> | |||
<Step | |||
finished={false} | |||
key="3" | |||
onOpen={[Function]} | |||
open={false} | |||
renderForm={[Function]} | |||
stepNumber={4} | |||
stepTitle="onboarding.tutorial.with.azure_pipelines.SaveAndRun.title" | |||
/> | |||
</Fragment> | |||
`; | |||
exports[`should render correctly: last-step-wrapper 1`] = ` | |||
<div | |||
className="boxed-group onboarding-step" | |||
@@ -168,11 +118,3 @@ exports[`should render correctly: last-step-wrapper 1`] = ` | |||
</div> | |||
</div> | |||
`; | |||
exports[`should render correctly: wrong alm 1`] = ` | |||
<Alert | |||
variant="error" | |||
> | |||
onboarding.tutorial.with.azure_pipelines.unsupported | |||
</Alert> | |||
`; |
@@ -35,7 +35,7 @@ export interface BitbucketPipelinesTutorialProps { | |||
baseUrl: string; | |||
component: T.Component; | |||
currentUser: T.LoggedInUser; | |||
projectBinding: ProjectAlmBindingResponse; | |||
projectBinding?: ProjectAlmBindingResponse; | |||
} | |||
export default function BitbucketPipelinesTutorial(props: BitbucketPipelinesTutorialProps) { |
@@ -25,6 +25,7 @@ import { translate } from 'sonar-ui-common/helpers/l10n'; | |||
import { AlmSettingsInstance, ProjectAlmBindingResponse } from '../../../types/alm-settings'; | |||
import SentenceWithHighlights from '../components/SentenceWithHighlights'; | |||
import TokenStepGenerator from '../components/TokenStepGenerator'; | |||
import { buildBitbucketCloudLink } from '../utils'; | |||
export interface RepositoryVariablesProps { | |||
almBinding?: AlmSettingsInstance; | |||
@@ -32,7 +33,7 @@ export interface RepositoryVariablesProps { | |||
component: T.Component; | |||
currentUser: T.LoggedInUser; | |||
onDone: () => void; | |||
projectBinding: ProjectAlmBindingResponse; | |||
projectBinding?: ProjectAlmBindingResponse; | |||
} | |||
export default function RepositoryVariables(props: RepositoryVariablesProps) { | |||
@@ -44,18 +45,22 @@ export default function RepositoryVariables(props: RepositoryVariablesProps) { | |||
defaultMessage={translate('onboarding.tutorial.with.bitbucket_pipelines.variables.intro')} | |||
id="onboarding.tutorial.with.bitbucket_pipelines.variables.intro" | |||
values={{ | |||
repository_variables: almBinding?.url ? ( | |||
<a | |||
href={`${almBinding.url}/${projectBinding.slug}/admin/addon/admin/pipelines/repository-variables`} | |||
target="_blank" | |||
rel="noopener noreferrer"> | |||
{translate('onboarding.tutorial.with.bitbucket_pipelines.variables.intro.link')} | |||
</a> | |||
) : ( | |||
<b> | |||
{translate('onboarding.tutorial.with.bitbucket_pipelines.variables.intro.link')} | |||
</b> | |||
) | |||
repository_variables: | |||
almBinding?.url && projectBinding?.repository ? ( | |||
<a | |||
href={`${buildBitbucketCloudLink( | |||
almBinding, | |||
projectBinding | |||
)}/admin/addon/admin/pipelines/repository-variables`} | |||
target="_blank" | |||
rel="noopener noreferrer"> | |||
{translate('onboarding.tutorial.with.bitbucket_pipelines.variables.intro.link')} | |||
</a> | |||
) : ( | |||
<strong> | |||
{translate('onboarding.tutorial.with.bitbucket_pipelines.variables.intro.link')} | |||
</strong> | |||
) | |||
}} | |||
/> | |||
</p> |
@@ -12,9 +12,9 @@ exports[`should render correctly 1`] = ` | |||
id="onboarding.tutorial.with.bitbucket_pipelines.variables.intro" | |||
values={ | |||
Object { | |||
"repository_variables": <b> | |||
"repository_variables": <strong> | |||
onboarding.tutorial.with.bitbucket_pipelines.variables.intro.link | |||
</b>, | |||
</strong>, | |||
} | |||
} | |||
/> |
@@ -35,7 +35,7 @@ export interface GitHubActionTutorialProps { | |||
baseUrl: string; | |||
component: T.Component; | |||
currentUser: T.LoggedInUser; | |||
projectBinding: ProjectAlmBindingResponse; | |||
projectBinding?: ProjectAlmBindingResponse; | |||
} | |||
export default function GitHubActionTutorial(props: GitHubActionTutorialProps) { |
@@ -32,7 +32,7 @@ export interface SecretStepProps { | |||
baseUrl: string; | |||
component: T.Component; | |||
currentUser: T.LoggedInUser; | |||
projectBinding: ProjectAlmBindingResponse; | |||
projectBinding?: ProjectAlmBindingResponse; | |||
onDone: () => void; | |||
} | |||
@@ -46,16 +46,19 @@ export default function SecretStep(props: SecretStepProps) { | |||
defaultMessage={translate('onboarding.tutorial.with.github_action.secret.intro')} | |||
id="onboarding.tutorial.with.github_action.secret.intro" | |||
values={{ | |||
settings_secret: almBinding ? ( | |||
<a | |||
href={`${buildGithubLink(almBinding, projectBinding)}/settings/secrets`} | |||
target="_blank" | |||
rel="noopener noreferrer"> | |||
{translate('onboarding.tutorial.with.github_action.secret.intro.link')} | |||
</a> | |||
) : ( | |||
translate('onboarding.tutorial.with.github_action.secret.intro.link') | |||
) | |||
settings_secret: | |||
almBinding && projectBinding ? ( | |||
<a | |||
href={`${buildGithubLink(almBinding, projectBinding)}/settings/secrets`} | |||
target="_blank" | |||
rel="noopener noreferrer"> | |||
{translate('onboarding.tutorial.with.github_action.secret.intro.link')} | |||
</a> | |||
) : ( | |||
<strong> | |||
{translate('onboarding.tutorial.with.github_action.secret.intro.link')} | |||
</strong> | |||
) | |||
}} | |||
/> | |||
</p> |
@@ -30,7 +30,8 @@ it('should render correctly', () => { | |||
expect(shallowRender()).toMatchSnapshot('default'); | |||
expect( | |||
shallowRender({ | |||
almBinding: mockAlmSettingsInstance({ url: 'http://github.enterprise.com/api/v3' }) | |||
almBinding: mockAlmSettingsInstance({ url: 'http://github.enterprise.com/api/v3' }), | |||
projectBinding: mockProjectGithubBindingResponse() | |||
}) | |||
).toMatchSnapshot('with binding information'); | |||
}); | |||
@@ -42,7 +43,6 @@ function shallowRender(props: Partial<SecretStepProps> = {}) { | |||
component={mockComponent()} | |||
currentUser={mockLoggedInUser()} | |||
onDone={jest.fn()} | |||
projectBinding={mockProjectGithubBindingResponse()} | |||
{...props} | |||
/> | |||
); |
@@ -12,7 +12,9 @@ exports[`should render correctly: default 1`] = ` | |||
id="onboarding.tutorial.with.github_action.secret.intro" | |||
values={ | |||
Object { | |||
"settings_secret": "onboarding.tutorial.with.github_action.secret.intro.link", | |||
"settings_secret": <strong> | |||
onboarding.tutorial.with.github_action.secret.intro.link | |||
</strong>, | |||
} | |||
} | |||
/> |
@@ -18,12 +18,7 @@ | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
import * as React from 'react'; | |||
import { Alert } from 'sonar-ui-common/components/ui/Alert'; | |||
import { translate } from 'sonar-ui-common/helpers/l10n'; | |||
import { | |||
isProjectGitLabBindingResponse, | |||
ProjectAlmBindingResponse | |||
} from '../../../types/alm-settings'; | |||
import EnvironmentVariablesStep from './EnvironmentVariablesStep'; | |||
import ProjectKeyStep from './ProjectKeyStep'; | |||
import { GitlabBuildTools } from './types'; | |||
@@ -39,22 +34,14 @@ export interface GitLabCITutorialProps { | |||
baseUrl: string; | |||
component: T.Component; | |||
currentUser: T.LoggedInUser; | |||
projectBinding: ProjectAlmBindingResponse; | |||
} | |||
export default function GitLabCITutorial(props: GitLabCITutorialProps) { | |||
const { baseUrl, component, currentUser, projectBinding } = props; | |||
const { baseUrl, component, currentUser } = props; | |||
const [step, setStep] = React.useState(Steps.PROJECT_KEY); | |||
const [buildTool, setBuildTool] = React.useState<GitlabBuildTools | undefined>(); | |||
// Failsafe; should never happen. | |||
if (!isProjectGitLabBindingResponse(projectBinding)) { | |||
return ( | |||
<Alert variant="error">{translate('onboarding.tutorial.with.gitlab_ci.unsupported')}</Alert> | |||
); | |||
} | |||
return ( | |||
<> | |||
<div className="page-header big-spacer-bottom"> |
@@ -19,18 +19,11 @@ | |||
*/ | |||
import { shallow } from 'enzyme'; | |||
import * as React from 'react'; | |||
import { | |||
mockProjectGithubBindingResponse, | |||
mockProjectGitLabBindingResponse | |||
} from '../../../../helpers/mocks/alm-settings'; | |||
import { mockComponent, mockLoggedInUser } from '../../../../helpers/testMocks'; | |||
import GitLabCITutorial, { GitLabCITutorialProps } from '../GitLabCITutorial'; | |||
it('should render correctly', () => { | |||
expect(shallowRender()).toMatchSnapshot(); | |||
expect(shallowRender({ projectBinding: mockProjectGithubBindingResponse() })).toMatchSnapshot( | |||
'wrong alm' | |||
); | |||
}); | |||
function shallowRender(props: Partial<GitLabCITutorialProps> = {}) { | |||
@@ -39,7 +32,6 @@ function shallowRender(props: Partial<GitLabCITutorialProps> = {}) { | |||
baseUrl="http://localhost:9000" | |||
component={mockComponent()} | |||
currentUser={mockLoggedInUser()} | |||
projectBinding={mockProjectGitLabBindingResponse()} | |||
{...props} | |||
/> | |||
); |
@@ -84,11 +84,3 @@ exports[`should render correctly 1`] = ` | |||
/> | |||
</Fragment> | |||
`; | |||
exports[`should render correctly: wrong alm 1`] = ` | |||
<Alert | |||
variant="error" | |||
> | |||
onboarding.tutorial.with.gitlab_ci.unsupported | |||
</Alert> | |||
`; |
@@ -19,59 +19,52 @@ | |||
*/ | |||
import * as React from 'react'; | |||
import { connect } from 'react-redux'; | |||
import { Alert } from 'sonar-ui-common/components/ui/Alert'; | |||
import { translate } from 'sonar-ui-common/helpers/l10n'; | |||
import { getAppState, getCurrentUserSetting, Store } from '../../../store/rootReducer'; | |||
import { setCurrentUserSetting } from '../../../store/users'; | |||
import { | |||
AlmKeys, | |||
AlmSettingsInstance, | |||
isProjectBitbucketBindingResponse, | |||
isProjectBitbucketCloudBindingResponse, | |||
isProjectGitHubBindingResponse, | |||
isProjectGitLabBindingResponse, | |||
ProjectAlmBindingResponse | |||
} from '../../../types/alm-settings'; | |||
import JenkinsfileStep from './JenkinsfileStep'; | |||
import MultiBranchPipelineStep from './MultiBranchPipelineStep'; | |||
import PipelineStep from './PipelineStep'; | |||
import PreRequisitesStep from './PreRequisitesStep'; | |||
import SelectAlmStep from './SelectAlmStep'; | |||
import WebhookStep from './WebhookStep'; | |||
export interface JenkinsTutorialProps { | |||
almBinding?: AlmSettingsInstance; | |||
branchesEnabled: boolean; | |||
component: T.Component; | |||
projectBinding: ProjectAlmBindingResponse; | |||
projectBinding?: ProjectAlmBindingResponse; | |||
setCurrentUserSetting: (setting: T.CurrentUserSetting) => void; | |||
skipPreReqs: boolean; | |||
} | |||
enum Steps { | |||
PreRequisites = 0, | |||
MultiBranchPipeline = 1, | |||
Webhook = 2, | |||
Jenkinsfile = 3 | |||
SelectAlm = 0, | |||
PreRequisites = 1, | |||
MultiBranchPipeline = 2, | |||
Webhook = 3, | |||
Jenkinsfile = 4 | |||
} | |||
const USER_SETTING_SKIP_BITBUCKET_PREREQS = 'tutorials.jenkins.skipBitbucketPreReqs'; | |||
export function JenkinsTutorial(props: JenkinsTutorialProps) { | |||
const { almBinding, branchesEnabled, component, projectBinding, skipPreReqs } = props; | |||
const [step, setStep] = React.useState( | |||
skipPreReqs ? Steps.MultiBranchPipeline : Steps.PreRequisites | |||
); | |||
const hasSelectAlmStep = projectBinding?.alm === undefined; | |||
const [alm, setAlm] = React.useState<AlmKeys | undefined>(projectBinding?.alm); | |||
// Failsafe; should never happen. | |||
if ( | |||
!isProjectBitbucketCloudBindingResponse(projectBinding) && | |||
!isProjectBitbucketBindingResponse(projectBinding) && | |||
!isProjectGitHubBindingResponse(projectBinding) && | |||
!isProjectGitLabBindingResponse(projectBinding) | |||
) { | |||
return ( | |||
<Alert variant="error">{translate('onboarding.tutorial.with.jenkins.unsupported')}</Alert> | |||
); | |||
let startStep; | |||
if (alm) { | |||
startStep = skipPreReqs ? Steps.MultiBranchPipeline : Steps.PreRequisites; | |||
} else { | |||
startStep = Steps.SelectAlm; | |||
} | |||
const [step, setStep] = React.useState(startStep); | |||
return ( | |||
<> | |||
@@ -79,51 +72,70 @@ export function JenkinsTutorial(props: JenkinsTutorialProps) { | |||
<h1 className="page-title">{translate('onboarding.tutorial.with.jenkins.title')}</h1> | |||
</div> | |||
<PreRequisitesStep | |||
alm={projectBinding.alm} | |||
branchesEnabled={branchesEnabled} | |||
onDone={() => setStep(Steps.MultiBranchPipeline)} | |||
onOpen={() => setStep(Steps.PreRequisites)} | |||
onChangeSkipNextTime={skip => { | |||
props.setCurrentUserSetting({ | |||
key: USER_SETTING_SKIP_BITBUCKET_PREREQS, | |||
value: skip.toString() | |||
}); | |||
}} | |||
open={step === Steps.PreRequisites} | |||
skipNextTime={skipPreReqs} | |||
/> | |||
{branchesEnabled ? ( | |||
<MultiBranchPipelineStep | |||
almBinding={almBinding} | |||
finished={step > Steps.MultiBranchPipeline} | |||
onDone={() => setStep(Steps.Webhook)} | |||
onOpen={() => setStep(Steps.MultiBranchPipeline)} | |||
open={step === Steps.MultiBranchPipeline} | |||
projectBinding={projectBinding} | |||
/> | |||
) : ( | |||
<PipelineStep | |||
alm={projectBinding.alm} | |||
finished={step > Steps.MultiBranchPipeline} | |||
onDone={() => setStep(Steps.Webhook)} | |||
onOpen={() => setStep(Steps.MultiBranchPipeline)} | |||
open={step === Steps.MultiBranchPipeline} | |||
{hasSelectAlmStep && ( | |||
<SelectAlmStep | |||
alm={alm} | |||
open={step === Steps.SelectAlm} | |||
onCheck={value => { | |||
setAlm(value); | |||
setStep(Steps.PreRequisites); | |||
}} | |||
onOpen={() => setStep(Steps.SelectAlm)} | |||
/> | |||
)} | |||
<WebhookStep | |||
almBinding={almBinding} | |||
branchesEnabled={branchesEnabled} | |||
finished={step > Steps.Webhook} | |||
onDone={() => setStep(Steps.Jenkinsfile)} | |||
onOpen={() => setStep(Steps.Webhook)} | |||
open={step === Steps.Webhook} | |||
projectBinding={projectBinding} | |||
/> | |||
{alm && ( | |||
<> | |||
<PreRequisitesStep | |||
alm={alm} | |||
branchesEnabled={branchesEnabled} | |||
finished={step > Steps.PreRequisites} | |||
onDone={() => setStep(Steps.MultiBranchPipeline)} | |||
onOpen={() => setStep(Steps.PreRequisites)} | |||
onChangeSkipNextTime={skip => { | |||
props.setCurrentUserSetting({ | |||
key: USER_SETTING_SKIP_BITBUCKET_PREREQS, | |||
value: skip.toString() | |||
}); | |||
}} | |||
open={step === Steps.PreRequisites} | |||
skipNextTime={skipPreReqs} | |||
/> | |||
<JenkinsfileStep component={component} open={step === Steps.Jenkinsfile} /> | |||
{branchesEnabled ? ( | |||
<MultiBranchPipelineStep | |||
alm={alm} | |||
almBinding={almBinding} | |||
finished={step > Steps.MultiBranchPipeline} | |||
onDone={() => setStep(Steps.Webhook)} | |||
onOpen={() => setStep(Steps.MultiBranchPipeline)} | |||
open={step === Steps.MultiBranchPipeline} | |||
projectBinding={projectBinding} | |||
/> | |||
) : ( | |||
<PipelineStep | |||
alm={alm} | |||
finished={step > Steps.MultiBranchPipeline} | |||
onDone={() => setStep(Steps.Webhook)} | |||
onOpen={() => setStep(Steps.MultiBranchPipeline)} | |||
open={step === Steps.MultiBranchPipeline} | |||
/> | |||
)} | |||
<WebhookStep | |||
alm={alm} | |||
almBinding={almBinding} | |||
branchesEnabled={branchesEnabled} | |||
finished={step > Steps.Webhook} | |||
onDone={() => setStep(Steps.Jenkinsfile)} | |||
onOpen={() => setStep(Steps.Webhook)} | |||
open={step === Steps.Webhook} | |||
projectBinding={projectBinding} | |||
/> | |||
<JenkinsfileStep component={component} open={step === Steps.Jenkinsfile} /> | |||
</> | |||
)} | |||
</> | |||
); | |||
} |
@@ -21,15 +21,9 @@ import * as React from 'react'; | |||
import { Button } from 'sonar-ui-common/components/controls/buttons'; | |||
import { translate } from 'sonar-ui-common/helpers/l10n'; | |||
import { | |||
AlmKeys, | |||
AlmSettingsInstance, | |||
isProjectBitbucketBindingResponse, | |||
isProjectBitbucketCloudBindingResponse, | |||
isProjectGitHubBindingResponse, | |||
isProjectGitLabBindingResponse, | |||
ProjectBitbucketBindingResponse, | |||
ProjectBitbucketCloudBindingResponse, | |||
ProjectGitHubBindingResponse, | |||
ProjectGitLabBindingResponse | |||
ProjectAlmBindingResponse | |||
} from '../../../types/alm-settings'; | |||
import LabelActionPair from '../components/LabelActionPair'; | |||
import LabelValuePair from '../components/LabelValuePair'; | |||
@@ -37,19 +31,14 @@ import SentenceWithHighlights from '../components/SentenceWithHighlights'; | |||
import Step from '../components/Step'; | |||
import { buildGithubLink } from '../utils'; | |||
type validBindingResponse = | |||
| ProjectBitbucketCloudBindingResponse | |||
| ProjectBitbucketBindingResponse | |||
| ProjectGitHubBindingResponse | |||
| ProjectGitLabBindingResponse; | |||
export interface MultiBranchPipelineStepProps { | |||
alm: AlmKeys; | |||
almBinding?: AlmSettingsInstance; | |||
finished: boolean; | |||
onDone: () => void; | |||
onOpen: () => void; | |||
open: boolean; | |||
projectBinding: validBindingResponse; | |||
projectBinding?: ProjectAlmBindingResponse; | |||
} | |||
/* Capture [workspaceID] from this pattern: https://bitbucket.org/[workspaceId]/ */ | |||
@@ -64,7 +53,7 @@ function extractBitbucketCloudWorkspaceId(almBinding?: AlmSettingsInstance): str | |||
} | |||
export default function MultiBranchPipelineStep(props: MultiBranchPipelineStepProps) { | |||
const { almBinding, finished, open, projectBinding } = props; | |||
const { alm, almBinding, finished, open, projectBinding } = props; | |||
const workspaceId = extractBitbucketCloudWorkspaceId(almBinding); | |||
@@ -88,10 +77,10 @@ export default function MultiBranchPipelineStep(props: MultiBranchPipelineStepPr | |||
<li> | |||
<SentenceWithHighlights | |||
highlightKeys={['tab', 'source']} | |||
translationKey={`onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.${projectBinding.alm}`} | |||
translationKey={`onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.${alm}`} | |||
/> | |||
<ul className="list-styled"> | |||
{isProjectBitbucketBindingResponse(projectBinding) && ( | |||
{alm === AlmKeys.BitbucketServer && ( | |||
<> | |||
<li> | |||
<LabelActionPair translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucket.server" /> | |||
@@ -100,20 +89,28 @@ export default function MultiBranchPipelineStep(props: MultiBranchPipelineStepPr | |||
<LabelActionPair translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucket.creds" /> | |||
</li> | |||
<li> | |||
<LabelValuePair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucket.owner" | |||
value={projectBinding.repository} | |||
/> | |||
{projectBinding?.repository ? ( | |||
<LabelValuePair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucket.owner" | |||
value={projectBinding.repository} | |||
/> | |||
) : ( | |||
<LabelActionPair translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucket.owner" /> | |||
)} | |||
</li> | |||
<li> | |||
<LabelValuePair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucket.repo" | |||
value={projectBinding.slug} | |||
/> | |||
{projectBinding?.slug ? ( | |||
<LabelValuePair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucket.repo" | |||
value={projectBinding.slug} | |||
/> | |||
) : ( | |||
<LabelActionPair translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucket.repo" /> | |||
)} | |||
</li> | |||
</> | |||
)} | |||
{isProjectBitbucketCloudBindingResponse(projectBinding) && ( | |||
{alm === AlmKeys.BitbucketCloud && ( | |||
<> | |||
<li> | |||
<LabelActionPair translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucketcloud.server" /> | |||
@@ -132,20 +129,25 @@ export default function MultiBranchPipelineStep(props: MultiBranchPipelineStepPr | |||
)} | |||
</li> | |||
<li> | |||
<LabelValuePair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucketcloud.repo" | |||
value={projectBinding.repository} | |||
/> | |||
{projectBinding?.repository ? ( | |||
<LabelValuePair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucketcloud.repo" | |||
value={projectBinding.repository} | |||
/> | |||
) : ( | |||
<LabelActionPair translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucketcloud.repo" /> | |||
)} | |||
</li> | |||
</> | |||
)} | |||
{isProjectGitHubBindingResponse(projectBinding) && ( | |||
{alm === AlmKeys.GitHub && ( | |||
<> | |||
<li> | |||
<LabelActionPair translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.github.creds" /> | |||
</li> | |||
<li> | |||
{almBinding !== undefined && | |||
projectBinding !== undefined && | |||
buildGithubLink(almBinding, projectBinding) !== null ? ( | |||
<LabelValuePair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.github.repo_url" | |||
@@ -157,7 +159,7 @@ export default function MultiBranchPipelineStep(props: MultiBranchPipelineStepPr | |||
</li> | |||
</> | |||
)} | |||
{isProjectGitLabBindingResponse(projectBinding) && ( | |||
{alm === AlmKeys.GitLab && ( | |||
<> | |||
<li> | |||
<LabelActionPair translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.gitlab.creds" /> | |||
@@ -172,7 +174,7 @@ export default function MultiBranchPipelineStep(props: MultiBranchPipelineStepPr | |||
)} | |||
<li> | |||
<LabelActionPair | |||
translationKey={`onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.${projectBinding.alm}.behaviour`} | |||
translationKey={`onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.${alm}.behaviour`} | |||
/> | |||
</li> | |||
</ul> |
@@ -30,6 +30,7 @@ import Step from '../components/Step'; | |||
export interface PreRequisitesStepProps { | |||
alm: AlmKeys; | |||
branchesEnabled: boolean; | |||
finished: boolean; | |||
onChangeSkipNextTime: (skip: boolean) => void; | |||
onDone: () => void; | |||
onOpen: () => void; | |||
@@ -38,10 +39,10 @@ export interface PreRequisitesStepProps { | |||
} | |||
export default function PreRequisitesStep(props: PreRequisitesStepProps) { | |||
const { alm, branchesEnabled, open, skipNextTime } = props; | |||
const { alm, branchesEnabled, finished, open, skipNextTime } = props; | |||
return ( | |||
<Step | |||
finished={!open} | |||
finished={finished} | |||
onOpen={props.onOpen} | |||
open={open} | |||
renderForm={() => ( |
@@ -0,0 +1,74 @@ | |||
/* | |||
* SonarQube | |||
* Copyright (C) 2009-2021 SonarSource SA | |||
* mailto:info AT sonarsource DOT com | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 3 of the License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public License | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
import * as React from 'react'; | |||
import RadioToggle from 'sonar-ui-common/components/controls/RadioToggle'; | |||
import AlertSuccessIcon from 'sonar-ui-common/components/icons/AlertSuccessIcon'; | |||
import { hasMessage, translate } from 'sonar-ui-common/helpers/l10n'; | |||
import { AlmKeys } from '../../../types/alm-settings'; | |||
import Step from '../components/Step'; | |||
export interface SelectAlmStepProps { | |||
alm?: AlmKeys; | |||
open: boolean; | |||
onCheck: (value: AlmKeys) => void; | |||
onOpen: () => void; | |||
} | |||
function getAlmLongName(alm: AlmKeys) { | |||
return hasMessage('alm', alm, 'long') ? translate('alm', alm, 'long') : translate('alm', alm); | |||
} | |||
export default function SelectAlmStep(props: SelectAlmStepProps) { | |||
const { alm, open } = props; | |||
return ( | |||
<Step | |||
finished={true} | |||
open={open} | |||
onOpen={props.onOpen} | |||
renderForm={() => ( | |||
<div className="boxed-group-inner"> | |||
<RadioToggle | |||
name="alm" | |||
onCheck={props.onCheck} | |||
options={[ | |||
AlmKeys.BitbucketCloud, | |||
AlmKeys.BitbucketServer, | |||
AlmKeys.GitHub, | |||
AlmKeys.GitLab | |||
].map(almKey => ({ | |||
label: getAlmLongName(almKey), | |||
value: almKey | |||
}))} | |||
value={alm} | |||
/> | |||
</div> | |||
)} | |||
renderResult={() => | |||
alm && ( | |||
<div className="boxed-group-actions display-flex-center"> | |||
<AlertSuccessIcon className="spacer-right" /> | |||
{getAlmLongName(alm)} | |||
</div> | |||
) | |||
} | |||
stepTitle={translate('onboarding.tutorial.with.jenkins.alm_selection.title')} | |||
/> | |||
); | |||
} |
@@ -32,23 +32,25 @@ import WebhookStepGithub from './WebhookStepGithub'; | |||
import WebhookStepGitLab from './WebhookStepGitLab'; | |||
export interface WebhookStepProps { | |||
alm: AlmKeys; | |||
almBinding?: AlmSettingsInstance; | |||
branchesEnabled: boolean; | |||
finished: boolean; | |||
onDone: () => void; | |||
onOpen: () => void; | |||
open: boolean; | |||
projectBinding: ProjectAlmBindingResponse; | |||
projectBinding?: ProjectAlmBindingResponse; | |||
} | |||
function renderAlmSpecificInstructions(props: WebhookStepProps) { | |||
const { almBinding, branchesEnabled, projectBinding } = props; | |||
const { alm, almBinding, branchesEnabled, projectBinding } = props; | |||
switch (projectBinding.alm) { | |||
switch (alm) { | |||
case AlmKeys.BitbucketCloud: | |||
case AlmKeys.BitbucketServer: | |||
return ( | |||
<WebhookStepBitbucket | |||
alm={alm} | |||
almBinding={almBinding} | |||
branchesEnabled={branchesEnabled} | |||
projectBinding={projectBinding} | |||
@@ -73,7 +75,7 @@ function renderAlmSpecificInstructions(props: WebhookStepProps) { | |||
} | |||
export default function WebhookStep(props: WebhookStepProps) { | |||
const { finished, open, projectBinding } = props; | |||
const { alm, finished, open } = props; | |||
return ( | |||
<Step | |||
@@ -100,7 +102,7 @@ export default function WebhookStep(props: WebhookStepProps) { | |||
</div> | |||
)} | |||
stepNumber={2} | |||
stepTitle={translate('onboarding.tutorial.with.jenkins.webhook', projectBinding.alm, 'title')} | |||
stepTitle={translate('onboarding.tutorial.with.jenkins.webhook', alm, 'title')} | |||
/> | |||
); | |||
} |
@@ -21,6 +21,7 @@ import * as React from 'react'; | |||
import { FormattedMessage } from 'react-intl'; | |||
import { Alert } from 'sonar-ui-common/components/ui/Alert'; | |||
import { translate } from 'sonar-ui-common/helpers/l10n'; | |||
import { stripTrailingSlash } from '../../../helpers/urls'; | |||
import { | |||
AlmKeys, | |||
AlmSettingsInstance, | |||
@@ -29,11 +30,13 @@ import { | |||
import CodeSnippet from '../../common/CodeSnippet'; | |||
import LabelActionPair from '../components/LabelActionPair'; | |||
import SentenceWithHighlights from '../components/SentenceWithHighlights'; | |||
import { buildBitbucketCloudLink } from '../utils'; | |||
export interface WebhookStepBitbucketProps { | |||
alm: AlmKeys; | |||
almBinding?: AlmSettingsInstance; | |||
branchesEnabled: boolean; | |||
projectBinding: ProjectAlmBindingResponse; | |||
projectBinding?: ProjectAlmBindingResponse; | |||
} | |||
function buildUrlSnippet( | |||
@@ -50,18 +53,21 @@ function buildUrlSnippet( | |||
} | |||
export default function WebhookStepBitbucket(props: WebhookStepBitbucketProps) { | |||
const { almBinding, branchesEnabled, projectBinding } = props; | |||
const { alm, almBinding, branchesEnabled, projectBinding } = props; | |||
const isBitbucketCloud = projectBinding.alm === AlmKeys.BitbucketCloud; | |||
const isBitbucketCloud = alm === AlmKeys.BitbucketCloud; | |||
let linkUrl; | |||
if (almBinding?.url) { | |||
if (isBitbucketCloud) { | |||
linkUrl = | |||
projectBinding.repository && | |||
`${almBinding.url}${projectBinding.repository}/admin/addon/admin/bitbucket-webhooks/bb-webhooks-repo-admin`; | |||
} else { | |||
linkUrl = `${almBinding.url}/plugins/servlet/webhooks/projects/${projectBinding.repository}/repos/${projectBinding.slug}/create`; | |||
if (almBinding?.url && projectBinding) { | |||
if (isBitbucketCloud && projectBinding?.repository) { | |||
linkUrl = `${buildBitbucketCloudLink( | |||
almBinding, | |||
projectBinding | |||
)}/admin/addon/admin/bitbucket-webhooks/bb-webhooks-repo-admin`; | |||
} else if (projectBinding.slug) { | |||
linkUrl = `${stripTrailingSlash(almBinding.url)}/plugins/servlet/webhooks/projects/${ | |||
projectBinding.repository | |||
}/repos/${projectBinding.slug}/create`; | |||
} | |||
} | |||
@@ -74,18 +80,12 @@ export default function WebhookStepBitbucket(props: WebhookStepBitbucketProps) { | |||
values={{ | |||
link: linkUrl ? ( | |||
<a href={linkUrl} rel="noopener noreferrer" target="_blank"> | |||
{translate( | |||
'onboarding.tutorial.with.jenkins.webhook', | |||
projectBinding.alm, | |||
'step1.link' | |||
)} | |||
{translate('onboarding.tutorial.with.jenkins.webhook', alm, 'step1.link')} | |||
</a> | |||
) : ( | |||
translate( | |||
'onboarding.tutorial.with.jenkins.webhook', | |||
projectBinding.alm, | |||
'step1.link' | |||
) | |||
<strong> | |||
{translate('onboarding.tutorial.with.jenkins.webhook', alm, 'step1.link')} | |||
</strong> | |||
) | |||
}} | |||
/> |
@@ -29,13 +29,14 @@ import { buildGithubLink } from '../utils'; | |||
export interface WebhookStepGithubProps { | |||
almBinding?: AlmSettingsInstance; | |||
branchesEnabled: boolean; | |||
projectBinding: ProjectAlmBindingResponse; | |||
projectBinding?: ProjectAlmBindingResponse; | |||
} | |||
export default function WebhookStepGithub(props: WebhookStepGithubProps) { | |||
const { almBinding, branchesEnabled, projectBinding } = props; | |||
const linkUrl = almBinding && `${buildGithubLink(almBinding, projectBinding)}/settings/hooks`; | |||
const linkUrl = | |||
almBinding && projectBinding && `${buildGithubLink(almBinding, projectBinding)}/settings/hooks`; | |||
const webhookUrl = branchesEnabled | |||
? '***JENKINS_SERVER_URL***/github-webhook/' | |||
@@ -53,7 +54,9 @@ export default function WebhookStepGithub(props: WebhookStepGithubProps) { | |||
{translate('onboarding.tutorial.with.jenkins.webhook.github.step1.link')} | |||
</a> | |||
) : ( | |||
translate('onboarding.tutorial.with.jenkins.webhook.github.step1.link') | |||
<strong> | |||
{translate('onboarding.tutorial.with.jenkins.webhook.github.step1.link')} | |||
</strong> | |||
) | |||
}} | |||
/> |
@@ -19,66 +19,80 @@ | |||
*/ | |||
import { shallow } from 'enzyme'; | |||
import * as React from 'react'; | |||
import { | |||
mockProjectAlmBindingResponse, | |||
mockProjectBitbucketBindingResponse | |||
} from '../../../../helpers/mocks/alm-settings'; | |||
import { mockProjectBitbucketBindingResponse } from '../../../../helpers/mocks/alm-settings'; | |||
import { mockComponent } from '../../../../helpers/testMocks'; | |||
import { AlmKeys } from '../../../../types/alm-settings'; | |||
import JenkinsfileStep from '../JenkinsfileStep'; | |||
import { JenkinsTutorial, JenkinsTutorialProps } from '../JenkinsTutorial'; | |||
import MultiBranchPipelineStep from '../MultiBranchPipelineStep'; | |||
import PreRequisitesStep from '../PreRequisitesStep'; | |||
import SelectAlmStep from '../SelectAlmStep'; | |||
import WebhookStep from '../WebhookStep'; | |||
it('should render correctly', () => { | |||
expect(shallowRender()).toMatchSnapshot('default'); | |||
expect(shallowRender({ branchesEnabled: false })).toMatchSnapshot('branches not enabled'); | |||
expect( | |||
shallowRender({ projectBinding: mockProjectAlmBindingResponse({ alm: AlmKeys.Azure }) }) | |||
).toMatchSnapshot('unsupported alm'); | |||
expect(shallowRender({ projectBinding: undefined })).toMatchSnapshot('no project binding'); | |||
}); | |||
it('should correctly navigate between steps', () => { | |||
const wrapper = shallowRender(); | |||
expect(wrapper.find(PreRequisitesStep).prop('open')).toBe(true); | |||
expect(wrapper.find(MultiBranchPipelineStep).prop('open')).toBe(false); | |||
expect(wrapper.find(WebhookStep).prop('open')).toBe(false); | |||
expect(wrapper.find(JenkinsfileStep).prop('open')).toBe(false); | |||
expect(wrapper.find(PreRequisitesStep).props().open).toBe(true); | |||
expect(wrapper.find(MultiBranchPipelineStep).props().open).toBe(false); | |||
expect(wrapper.find(WebhookStep).props().open).toBe(false); | |||
expect(wrapper.find(JenkinsfileStep).props().open).toBe(false); | |||
// Pre-reqs done. | |||
wrapper.find(PreRequisitesStep).prop('onDone')(); | |||
expect(wrapper.find(PreRequisitesStep).prop('open')).toBe(false); | |||
expect(wrapper.find(MultiBranchPipelineStep).prop('open')).toBe(true); | |||
expect(wrapper.find(WebhookStep).prop('open')).toBe(false); | |||
expect(wrapper.find(JenkinsfileStep).prop('open')).toBe(false); | |||
wrapper | |||
.find(PreRequisitesStep) | |||
.props() | |||
.onDone(); | |||
expect(wrapper.find(PreRequisitesStep).props().open).toBe(false); | |||
expect(wrapper.find(MultiBranchPipelineStep).props().open).toBe(true); | |||
expect(wrapper.find(WebhookStep).props().open).toBe(false); | |||
expect(wrapper.find(JenkinsfileStep).props().open).toBe(false); | |||
// Multibranch done. | |||
wrapper.find(MultiBranchPipelineStep).prop('onDone')(); | |||
expect(wrapper.find(PreRequisitesStep).prop('open')).toBe(false); | |||
expect(wrapper.find(MultiBranchPipelineStep).prop('open')).toBe(false); | |||
expect(wrapper.find(WebhookStep).prop('open')).toBe(true); | |||
expect(wrapper.find(JenkinsfileStep).prop('open')).toBe(false); | |||
wrapper | |||
.find(MultiBranchPipelineStep) | |||
.props() | |||
.onDone(); | |||
expect(wrapper.find(PreRequisitesStep).props().open).toBe(false); | |||
expect(wrapper.find(MultiBranchPipelineStep).props().open).toBe(false); | |||
expect(wrapper.find(WebhookStep).props().open).toBe(true); | |||
expect(wrapper.find(JenkinsfileStep).props().open).toBe(false); | |||
// Webhook done. | |||
wrapper.find(WebhookStep).prop('onDone')(); | |||
expect(wrapper.find(PreRequisitesStep).prop('open')).toBe(false); | |||
expect(wrapper.find(MultiBranchPipelineStep).prop('open')).toBe(false); | |||
expect(wrapper.find(WebhookStep).prop('open')).toBe(false); | |||
expect(wrapper.find(JenkinsfileStep).prop('open')).toBe(true); | |||
wrapper | |||
.find(WebhookStep) | |||
.props() | |||
.onDone(); | |||
expect(wrapper.find(PreRequisitesStep).props().open).toBe(false); | |||
expect(wrapper.find(MultiBranchPipelineStep).props().open).toBe(false); | |||
expect(wrapper.find(WebhookStep).props().open).toBe(false); | |||
expect(wrapper.find(JenkinsfileStep).props().open).toBe(true); | |||
// Open Pre-reqs. | |||
wrapper.find(PreRequisitesStep).prop('onOpen')(); | |||
expect(wrapper.find(PreRequisitesStep).prop('open')).toBe(true); | |||
wrapper | |||
.find(PreRequisitesStep) | |||
.props() | |||
.onOpen(); | |||
expect(wrapper.find(PreRequisitesStep).props().open).toBe(true); | |||
// Open Multibranch. | |||
wrapper.find(MultiBranchPipelineStep).prop('onOpen')(); | |||
expect(wrapper.find(MultiBranchPipelineStep).prop('open')).toBe(true); | |||
wrapper | |||
.find(MultiBranchPipelineStep) | |||
.props() | |||
.onOpen(); | |||
expect(wrapper.find(MultiBranchPipelineStep).props().open).toBe(true); | |||
// Open Webhook. | |||
wrapper.find(WebhookStep).prop('onOpen')(); | |||
expect(wrapper.find(WebhookStep).prop('open')).toBe(true); | |||
wrapper | |||
.find(WebhookStep) | |||
.props() | |||
.onOpen(); | |||
expect(wrapper.find(WebhookStep).props().open).toBe(true); | |||
}); | |||
it('should correctly store the user setting', () => { | |||
@@ -100,8 +114,19 @@ it('should correctly store the user setting', () => { | |||
it('should correctly skip the pre-reqs step if the user requested it', () => { | |||
const wrapper = shallowRender({ skipPreReqs: true }); | |||
expect(wrapper.find(PreRequisitesStep).prop('open')).toBe(false); | |||
expect(wrapper.find(MultiBranchPipelineStep).prop('open')).toBe(true); | |||
expect(wrapper.find(PreRequisitesStep).props().open).toBe(false); | |||
expect(wrapper.find(MultiBranchPipelineStep).props().open).toBe(true); | |||
}); | |||
it('should correctly select an ALM if no project is bound', () => { | |||
const wrapper = shallowRender({ projectBinding: undefined }); | |||
expect(wrapper.find(PreRequisitesStep).exists()).toBe(false); | |||
wrapper | |||
.find(SelectAlmStep) | |||
.props() | |||
.onCheck(AlmKeys.BitbucketCloud); | |||
expect(wrapper.find(SelectAlmStep).props().open).toBe(false); | |||
expect(wrapper.find(PreRequisitesStep).exists()).toBe(true); | |||
}); | |||
function shallowRender(props: Partial<JenkinsTutorialProps> = {}) { |
@@ -26,6 +26,7 @@ import { | |||
mockProjectGithubBindingResponse, | |||
mockProjectGitLabBindingResponse | |||
} from '../../../../helpers/mocks/alm-settings'; | |||
import { AlmKeys } from '../../../../types/alm-settings'; | |||
import MultiBranchPipelineStep, { MultiBranchPipelineStepProps } from '../MultiBranchPipelineStep'; | |||
import { renderStepContent } from '../test-utils'; | |||
@@ -33,9 +34,13 @@ it('should render correctly', () => { | |||
const wrapper = shallowRender(); | |||
expect(wrapper).toMatchSnapshot('Step wrapper'); | |||
expect(renderStepContent(wrapper)).toMatchSnapshot('content for bitbucket'); | |||
expect(renderStepContent(shallowRender({ projectBinding: undefined }))).toMatchSnapshot( | |||
'content for bitbucket, no binding' | |||
); | |||
expect( | |||
renderStepContent( | |||
shallowRender({ | |||
alm: AlmKeys.BitbucketCloud, | |||
almBinding: mockAlmSettingsInstance({ url: 'https://bitbucket.org/workspaceId/' }), | |||
projectBinding: mockProjectBitbucketCloudBindingResponse() | |||
}) | |||
@@ -44,19 +49,38 @@ it('should render correctly', () => { | |||
expect( | |||
renderStepContent( | |||
shallowRender({ | |||
alm: AlmKeys.BitbucketCloud, | |||
projectBinding: undefined | |||
}) | |||
) | |||
).toMatchSnapshot('content for bitbucket cloud, no binding'); | |||
expect( | |||
renderStepContent( | |||
shallowRender({ | |||
alm: AlmKeys.GitHub, | |||
almBinding: mockAlmSettingsInstance({ url: 'https://api.github.com/' }), | |||
projectBinding: mockProjectGithubBindingResponse() | |||
}) | |||
) | |||
).toMatchSnapshot('content for github'); | |||
expect( | |||
renderStepContent(shallowRender({ projectBinding: mockProjectGitLabBindingResponse() })) | |||
renderStepContent( | |||
shallowRender({ | |||
alm: AlmKeys.GitHub | |||
}) | |||
) | |||
).toMatchSnapshot('content for github, no binding'); | |||
expect( | |||
renderStepContent( | |||
shallowRender({ alm: AlmKeys.GitLab, projectBinding: mockProjectGitLabBindingResponse() }) | |||
) | |||
).toMatchSnapshot('content for gitlab'); | |||
}); | |||
function shallowRender(props: Partial<MultiBranchPipelineStepProps> = {}) { | |||
return shallow<MultiBranchPipelineStepProps>( | |||
<MultiBranchPipelineStep | |||
alm={AlmKeys.BitbucketServer} | |||
finished={false} | |||
onDone={jest.fn()} | |||
onOpen={jest.fn()} |
@@ -41,6 +41,7 @@ function shallowRender(props: Partial<PreRequisitesStepProps> = {}) { | |||
<PreRequisitesStep | |||
alm={AlmKeys.BitbucketServer} | |||
branchesEnabled={true} | |||
finished={false} | |||
onChangeSkipNextTime={jest.fn()} | |||
onDone={jest.fn()} | |||
onOpen={jest.fn()} |
@@ -0,0 +1,62 @@ | |||
/* | |||
* SonarQube | |||
* Copyright (C) 2009-2021 SonarSource SA | |||
* mailto:info AT sonarsource DOT com | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 3 of the License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public License | |||
* along with this program; if not, write to the Free Software Foundation, | |||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
*/ | |||
import { shallow } from 'enzyme'; | |||
import * as React from 'react'; | |||
import { AlmKeys } from '../../../../types/alm-settings'; | |||
import Step from '../../components/Step'; | |||
import SelectAlmStep, { SelectAlmStepProps } from '../SelectAlmStep'; | |||
jest.mock('sonar-ui-common/helpers/l10n', () => ({ | |||
hasMessage: (_a: string, k: string, _b: string) => k === AlmKeys.BitbucketCloud, | |||
translate: (...k: string[]) => k.join('.') | |||
})); | |||
it('should render correctly', () => { | |||
expect(shallowRender()).toMatchSnapshot('default'); | |||
expect( | |||
shallowRender() | |||
.find(Step) | |||
.props() | |||
.renderForm() | |||
).toMatchSnapshot('form, default'); | |||
expect( | |||
shallowRender({ alm: AlmKeys.Azure }) | |||
.find(Step) | |||
.props() | |||
.renderForm() | |||
).toMatchSnapshot('form, with alm'); | |||
expect( | |||
shallowRender() | |||
.find(Step) | |||
.props().renderResult!() | |||
).toBeUndefined(); | |||
expect( | |||
shallowRender({ alm: AlmKeys.BitbucketCloud }) | |||
.find(Step) | |||
.props().renderResult!() | |||
).toMatchSnapshot('result, with alm'); | |||
}); | |||
function shallowRender(props: Partial<SelectAlmStepProps> = {}) { | |||
return shallow<SelectAlmStepProps>( | |||
<SelectAlmStep onCheck={jest.fn()} onOpen={jest.fn()} open={true} {...props} /> | |||
); | |||
} |
@@ -36,8 +36,8 @@ it.each([ | |||
[AlmKeys.BitbucketServer, mockProjectBitbucketBindingResponse()], | |||
[AlmKeys.GitHub, mockProjectGithubBindingResponse()], | |||
[AlmKeys.GitLab, mockProjectAlmBindingResponse({ alm: AlmKeys.GitLab })] | |||
])('it should render correctly for %s', (_, projectBinding) => { | |||
const wrapper = shallowRender({ projectBinding }); | |||
])('it should render correctly for %s', (alm, projectBinding) => { | |||
const wrapper = shallowRender({ alm, projectBinding }); | |||
expect(wrapper).toMatchSnapshot('wrapper'); | |||
expect(renderStepContent(wrapper)).toMatchSnapshot('content'); | |||
}); | |||
@@ -45,6 +45,7 @@ it.each([ | |||
function shallowRender(props: Partial<WebhookStepProps> = {}) { | |||
return shallow<WebhookStepProps>( | |||
<WebhookStep | |||
alm={AlmKeys.BitbucketServer} | |||
almBinding={mockAlmSettingsInstance()} | |||
branchesEnabled={true} | |||
finished={false} |
@@ -24,25 +24,34 @@ import { | |||
mockProjectBitbucketBindingResponse, | |||
mockProjectBitbucketCloudBindingResponse | |||
} from '../../../../helpers/mocks/alm-settings'; | |||
import { AlmKeys } from '../../../../types/alm-settings'; | |||
import WebhookStepBitbucket, { WebhookStepBitbucketProps } from '../WebhookStepBitbucket'; | |||
it.each([ | |||
['bitbucket server', mockProjectBitbucketBindingResponse()], | |||
['bitbucket cloud', mockProjectBitbucketCloudBindingResponse()] | |||
])('should render correctly for %s', (_name, projectBinding) => { | |||
expect(shallowRender({ projectBinding })).toMatchSnapshot(); | |||
expect(shallowRender({ projectBinding, almBinding: undefined })).toMatchSnapshot( | |||
[ | |||
AlmKeys.BitbucketServer, | |||
mockProjectBitbucketBindingResponse(), | |||
mockAlmSettingsInstance({ url: 'http://bbs.enterprise.com' }) | |||
], | |||
[ | |||
AlmKeys.BitbucketCloud, | |||
mockProjectBitbucketCloudBindingResponse(), | |||
mockAlmSettingsInstance({ url: 'http://bitbucket.org/workspace/' }) | |||
] | |||
])('should render correctly for %s', (alm, projectBinding, almBinding) => { | |||
expect(shallowRender({ alm, projectBinding, almBinding })).toMatchSnapshot(); | |||
expect(shallowRender({ alm, projectBinding, almBinding: undefined })).toMatchSnapshot( | |||
'with no alm binding' | |||
); | |||
expect(shallowRender({ projectBinding, branchesEnabled: false })).toMatchSnapshot( | |||
'with branches disabled' | |||
); | |||
expect( | |||
shallowRender({ alm, projectBinding, almBinding, branchesEnabled: false }) | |||
).toMatchSnapshot('with branches disabled'); | |||
}); | |||
function shallowRender(props: Partial<WebhookStepBitbucketProps> = {}) { | |||
return shallow<WebhookStepBitbucketProps>( | |||
<WebhookStepBitbucket | |||
almBinding={mockAlmSettingsInstance({ url: 'http://bbs.enterprise.com' })} | |||
alm={AlmKeys.BitbucketServer} | |||
branchesEnabled={true} | |||
projectBinding={mockProjectBitbucketBindingResponse()} | |||
{...props} |
@@ -14,6 +14,7 @@ exports[`should render correctly: branches not enabled 1`] = ` | |||
<PreRequisitesStep | |||
alm="bitbucket" | |||
branchesEnabled={false} | |||
finished={false} | |||
onChangeSkipNextTime={[Function]} | |||
onDone={[Function]} | |||
onOpen={[Function]} | |||
@@ -28,6 +29,7 @@ exports[`should render correctly: branches not enabled 1`] = ` | |||
open={false} | |||
/> | |||
<WebhookStep | |||
alm="bitbucket" | |||
branchesEnabled={false} | |||
finished={false} | |||
onDone={[Function]} | |||
@@ -85,6 +87,7 @@ exports[`should render correctly: default 1`] = ` | |||
<PreRequisitesStep | |||
alm="bitbucket" | |||
branchesEnabled={true} | |||
finished={false} | |||
onChangeSkipNextTime={[Function]} | |||
onDone={[Function]} | |||
onOpen={[Function]} | |||
@@ -92,6 +95,7 @@ exports[`should render correctly: default 1`] = ` | |||
skipNextTime={false} | |||
/> | |||
<MultiBranchPipelineStep | |||
alm="bitbucket" | |||
finished={false} | |||
onDone={[Function]} | |||
onOpen={[Function]} | |||
@@ -107,6 +111,7 @@ exports[`should render correctly: default 1`] = ` | |||
} | |||
/> | |||
<WebhookStep | |||
alm="bitbucket" | |||
branchesEnabled={true} | |||
finished={false} | |||
onDone={[Function]} | |||
@@ -150,10 +155,21 @@ exports[`should render correctly: default 1`] = ` | |||
</Fragment> | |||
`; | |||
exports[`should render correctly: unsupported alm 1`] = ` | |||
<Alert | |||
variant="error" | |||
> | |||
onboarding.tutorial.with.jenkins.unsupported | |||
</Alert> | |||
exports[`should render correctly: no project binding 1`] = ` | |||
<Fragment> | |||
<div | |||
className="page-header big-spacer-bottom" | |||
> | |||
<h1 | |||
className="page-title" | |||
> | |||
onboarding.tutorial.with.jenkins.title | |||
</h1> | |||
</div> | |||
<SelectAlmStep | |||
onCheck={[Function]} | |||
onOpen={[Function]} | |||
open={true} | |||
/> | |||
</Fragment> | |||
`; |
@@ -182,7 +182,120 @@ exports[`should render correctly: content for bitbucket cloud 1`] = ` | |||
<li> | |||
<LabelValuePair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucketcloud.repo" | |||
value="PROJECT_KEY" | |||
value="repo-slug" | |||
/> | |||
</li> | |||
</React.Fragment> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucketcloud.behaviour" | |||
/> | |||
</li> | |||
</ul> | |||
<p | |||
className="big-spacer-left padder-left" | |||
> | |||
onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.leave_defaults | |||
</p> | |||
</li> | |||
<li> | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"tab", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step3" | |||
/> | |||
<ul | |||
className="list-styled" | |||
> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step3.mode" | |||
/> | |||
</li> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step3.script_path" | |||
/> | |||
</li> | |||
</ul> | |||
</li> | |||
<li> | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"save", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step4" | |||
/> | |||
</li> | |||
</ol> | |||
<Button | |||
onClick={[MockFunction]} | |||
> | |||
continue | |||
</Button> | |||
</div> | |||
`; | |||
exports[`should render correctly: content for bitbucket cloud, no binding 1`] = ` | |||
<div | |||
className="boxed-group-inner" | |||
> | |||
<p | |||
className="big-spacer-bottom" | |||
> | |||
onboarding.tutorial.with.jenkins.multi_branch_pipeline.intro | |||
</p> | |||
<ol | |||
className="list-styled" | |||
> | |||
<li> | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"new_item", | |||
"type", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step1" | |||
/> | |||
</li> | |||
<li> | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"tab", | |||
"source", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucketcloud" | |||
/> | |||
<ul | |||
className="list-styled" | |||
> | |||
<React.Fragment> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucketcloud.server" | |||
/> | |||
</li> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucketcloud.creds" | |||
/> | |||
</li> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucketcloud.owner" | |||
/> | |||
</li> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucketcloud.repo" | |||
/> | |||
</li> | |||
</React.Fragment> | |||
@@ -241,6 +354,119 @@ exports[`should render correctly: content for bitbucket cloud 1`] = ` | |||
</div> | |||
`; | |||
exports[`should render correctly: content for bitbucket, no binding 1`] = ` | |||
<div | |||
className="boxed-group-inner" | |||
> | |||
<p | |||
className="big-spacer-bottom" | |||
> | |||
onboarding.tutorial.with.jenkins.multi_branch_pipeline.intro | |||
</p> | |||
<ol | |||
className="list-styled" | |||
> | |||
<li> | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"new_item", | |||
"type", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step1" | |||
/> | |||
</li> | |||
<li> | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"tab", | |||
"source", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucket" | |||
/> | |||
<ul | |||
className="list-styled" | |||
> | |||
<React.Fragment> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucket.server" | |||
/> | |||
</li> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucket.creds" | |||
/> | |||
</li> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucket.owner" | |||
/> | |||
</li> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucket.repo" | |||
/> | |||
</li> | |||
</React.Fragment> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.bitbucket.behaviour" | |||
/> | |||
</li> | |||
</ul> | |||
<p | |||
className="big-spacer-left padder-left" | |||
> | |||
onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.leave_defaults | |||
</p> | |||
</li> | |||
<li> | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"tab", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step3" | |||
/> | |||
<ul | |||
className="list-styled" | |||
> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step3.mode" | |||
/> | |||
</li> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step3.script_path" | |||
/> | |||
</li> | |||
</ul> | |||
</li> | |||
<li> | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"save", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step4" | |||
/> | |||
</li> | |||
</ol> | |||
<Button | |||
onClick={[MockFunction]} | |||
> | |||
continue | |||
</Button> | |||
</div> | |||
`; | |||
exports[`should render correctly: content for github 1`] = ` | |||
<div | |||
className="boxed-group-inner" | |||
@@ -345,6 +571,109 @@ exports[`should render correctly: content for github 1`] = ` | |||
</div> | |||
`; | |||
exports[`should render correctly: content for github, no binding 1`] = ` | |||
<div | |||
className="boxed-group-inner" | |||
> | |||
<p | |||
className="big-spacer-bottom" | |||
> | |||
onboarding.tutorial.with.jenkins.multi_branch_pipeline.intro | |||
</p> | |||
<ol | |||
className="list-styled" | |||
> | |||
<li> | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"new_item", | |||
"type", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step1" | |||
/> | |||
</li> | |||
<li> | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"tab", | |||
"source", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.github" | |||
/> | |||
<ul | |||
className="list-styled" | |||
> | |||
<React.Fragment> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.github.creds" | |||
/> | |||
</li> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.github.repo_url" | |||
/> | |||
</li> | |||
</React.Fragment> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.github.behaviour" | |||
/> | |||
</li> | |||
</ul> | |||
<p | |||
className="big-spacer-left padder-left" | |||
> | |||
onboarding.tutorial.with.jenkins.multi_branch_pipeline.step2.leave_defaults | |||
</p> | |||
</li> | |||
<li> | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"tab", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step3" | |||
/> | |||
<ul | |||
className="list-styled" | |||
> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step3.mode" | |||
/> | |||
</li> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step3.script_path" | |||
/> | |||
</li> | |||
</ul> | |||
</li> | |||
<li> | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"save", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.multi_branch_pipeline.step4" | |||
/> | |||
</li> | |||
</ol> | |||
<Button | |||
onClick={[MockFunction]} | |||
> | |||
continue | |||
</Button> | |||
</div> | |||
`; | |||
exports[`should render correctly: content for gitlab 1`] = ` | |||
<div | |||
className="boxed-group-inner" |
@@ -2,7 +2,7 @@ | |||
exports[`should render correctly: Step wrapper 1`] = ` | |||
<Step | |||
finished={true} | |||
finished={false} | |||
onOpen={[MockFunction]} | |||
open={false} | |||
renderForm={[Function]} |
@@ -0,0 +1,89 @@ | |||
// Jest Snapshot v1, https://goo.gl/fbAQLP | |||
exports[`should render correctly: default 1`] = ` | |||
<Step | |||
finished={true} | |||
onOpen={[MockFunction]} | |||
open={true} | |||
renderForm={[Function]} | |||
renderResult={[Function]} | |||
stepTitle="onboarding.tutorial.with.jenkins.alm_selection.title" | |||
/> | |||
`; | |||
exports[`should render correctly: form, default 1`] = ` | |||
<div | |||
className="boxed-group-inner" | |||
> | |||
<RadioToggle | |||
disabled={false} | |||
name="alm" | |||
onCheck={[MockFunction]} | |||
options={ | |||
Array [ | |||
Object { | |||
"label": "alm.bitbucketcloud.long", | |||
"value": "bitbucketcloud", | |||
}, | |||
Object { | |||
"label": "alm.bitbucket", | |||
"value": "bitbucket", | |||
}, | |||
Object { | |||
"label": "alm.github", | |||
"value": "github", | |||
}, | |||
Object { | |||
"label": "alm.gitlab", | |||
"value": "gitlab", | |||
}, | |||
] | |||
} | |||
value={null} | |||
/> | |||
</div> | |||
`; | |||
exports[`should render correctly: form, with alm 1`] = ` | |||
<div | |||
className="boxed-group-inner" | |||
> | |||
<RadioToggle | |||
disabled={false} | |||
name="alm" | |||
onCheck={[MockFunction]} | |||
options={ | |||
Array [ | |||
Object { | |||
"label": "alm.bitbucketcloud.long", | |||
"value": "bitbucketcloud", | |||
}, | |||
Object { | |||
"label": "alm.bitbucket", | |||
"value": "bitbucket", | |||
}, | |||
Object { | |||
"label": "alm.github", | |||
"value": "github", | |||
}, | |||
Object { | |||
"label": "alm.gitlab", | |||
"value": "gitlab", | |||
}, | |||
] | |||
} | |||
value="azure" | |||
/> | |||
</div> | |||
`; | |||
exports[`should render correctly: result, with alm 1`] = ` | |||
<div | |||
className="boxed-group-actions display-flex-center" | |||
> | |||
<AlertSuccessIcon | |||
className="spacer-right" | |||
/> | |||
alm.bitbucketcloud.long | |||
</div> | |||
`; |
@@ -68,6 +68,7 @@ exports[`it should render correctly for bitbucket: content 1`] = ` | |||
className="list-styled" | |||
> | |||
<WebhookStepBitbucket | |||
alm="bitbucket" | |||
almBinding={ | |||
Object { | |||
"alm": "github", | |||
@@ -130,6 +131,7 @@ exports[`it should render correctly for bitbucketcloud: content 1`] = ` | |||
className="list-styled" | |||
> | |||
<WebhookStepBitbucket | |||
alm="bitbucketcloud" | |||
almBinding={ | |||
Object { | |||
"alm": "github", | |||
@@ -142,8 +144,7 @@ exports[`it should render correctly for bitbucketcloud: content 1`] = ` | |||
"alm": "bitbucketcloud", | |||
"key": "foo", | |||
"monorepo": true, | |||
"repository": "PROJECT_KEY", | |||
"slug": "repo-slug", | |||
"repository": "repo-slug", | |||
} | |||
} | |||
/> |
@@ -1,6 +1,6 @@ | |||
// Jest Snapshot v1, https://goo.gl/fbAQLP | |||
exports[`should render correctly for bitbucket cloud 1`] = ` | |||
exports[`should render correctly for bitbucket 1`] = ` | |||
<Fragment> | |||
<li> | |||
<FormattedMessage | |||
@@ -9,11 +9,11 @@ exports[`should render correctly for bitbucket cloud 1`] = ` | |||
values={ | |||
Object { | |||
"link": <a | |||
href="http://bbs.enterprise.comPROJECT_KEY/admin/addon/admin/bitbucket-webhooks/bb-webhooks-repo-admin" | |||
href="http://bbs.enterprise.com/plugins/servlet/webhooks/projects/PROJECT_KEY/repos/repo-slug/create" | |||
rel="noopener noreferrer" | |||
target="_blank" | |||
> | |||
onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step1.link | |||
onboarding.tutorial.with.jenkins.webhook.bitbucket.step1.link | |||
</a>, | |||
} | |||
} | |||
@@ -36,8 +36,13 @@ exports[`should render correctly for bitbucket cloud 1`] = ` | |||
</p> | |||
<CodeSnippet | |||
isOneLine={true} | |||
snippet="***JENKINS_SERVER_URL***/bitbucket-scmsource-hook/notify" | |||
snippet="***JENKINS_SERVER_URL***/bitbucket-scmsource-hook/notify?server_url=http://bbs.enterprise.com" | |||
/> | |||
<Alert | |||
variant="info" | |||
> | |||
onboarding.tutorial.with.jenkins.webhook.bitbucket.step1.url.warning | |||
</Alert> | |||
</li> | |||
</ul> | |||
</li> | |||
@@ -45,23 +50,22 @@ exports[`should render correctly for bitbucket cloud 1`] = ` | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"triggers", | |||
"option", | |||
"events", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2" | |||
/> | |||
<ul | |||
className="list-styled" | |||
> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2.repo" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2.repo" | |||
/> | |||
</li> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2.pr" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2.pr" | |||
/> | |||
</li> | |||
</ul> | |||
@@ -70,16 +74,16 @@ exports[`should render correctly for bitbucket cloud 1`] = ` | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"save", | |||
"create", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step3" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.step3" | |||
/> | |||
</li> | |||
</Fragment> | |||
`; | |||
exports[`should render correctly for bitbucket cloud: with branches disabled 1`] = ` | |||
exports[`should render correctly for bitbucket: with branches disabled 1`] = ` | |||
<Fragment> | |||
<li> | |||
<FormattedMessage | |||
@@ -88,11 +92,11 @@ exports[`should render correctly for bitbucket cloud: with branches disabled 1`] | |||
values={ | |||
Object { | |||
"link": <a | |||
href="http://bbs.enterprise.comPROJECT_KEY/admin/addon/admin/bitbucket-webhooks/bb-webhooks-repo-admin" | |||
href="http://bbs.enterprise.com/plugins/servlet/webhooks/projects/PROJECT_KEY/repos/repo-slug/create" | |||
rel="noopener noreferrer" | |||
target="_blank" | |||
> | |||
onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step1.link | |||
onboarding.tutorial.with.jenkins.webhook.bitbucket.step1.link | |||
</a>, | |||
} | |||
} | |||
@@ -124,18 +128,17 @@ exports[`should render correctly for bitbucket cloud: with branches disabled 1`] | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"triggers", | |||
"option", | |||
"events", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2" | |||
/> | |||
<ul | |||
className="list-styled" | |||
> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2.repo" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2.repo" | |||
/> | |||
</li> | |||
</ul> | |||
@@ -144,16 +147,16 @@ exports[`should render correctly for bitbucket cloud: with branches disabled 1`] | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"save", | |||
"create", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step3" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.step3" | |||
/> | |||
</li> | |||
</Fragment> | |||
`; | |||
exports[`should render correctly for bitbucket cloud: with no alm binding 1`] = ` | |||
exports[`should render correctly for bitbucket: with no alm binding 1`] = ` | |||
<Fragment> | |||
<li> | |||
<FormattedMessage | |||
@@ -161,7 +164,9 @@ exports[`should render correctly for bitbucket cloud: with no alm binding 1`] = | |||
id="onboarding.tutorial.with.jenkins.webhook.step1.sentence" | |||
values={ | |||
Object { | |||
"link": "onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step1.link", | |||
"link": <strong> | |||
onboarding.tutorial.with.jenkins.webhook.bitbucket.step1.link | |||
</strong>, | |||
} | |||
} | |||
/> | |||
@@ -183,8 +188,13 @@ exports[`should render correctly for bitbucket cloud: with no alm binding 1`] = | |||
</p> | |||
<CodeSnippet | |||
isOneLine={true} | |||
snippet="***JENKINS_SERVER_URL***/bitbucket-scmsource-hook/notify" | |||
snippet="***JENKINS_SERVER_URL***/bitbucket-scmsource-hook/notify?server_url=***BITBUCKET_URL***" | |||
/> | |||
<Alert | |||
variant="info" | |||
> | |||
onboarding.tutorial.with.jenkins.webhook.bitbucket.step1.url.warning | |||
</Alert> | |||
</li> | |||
</ul> | |||
</li> | |||
@@ -192,23 +202,22 @@ exports[`should render correctly for bitbucket cloud: with no alm binding 1`] = | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"triggers", | |||
"option", | |||
"events", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2" | |||
/> | |||
<ul | |||
className="list-styled" | |||
> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2.repo" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2.repo" | |||
/> | |||
</li> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2.pr" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2.pr" | |||
/> | |||
</li> | |||
</ul> | |||
@@ -217,16 +226,16 @@ exports[`should render correctly for bitbucket cloud: with no alm binding 1`] = | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"save", | |||
"create", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step3" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.step3" | |||
/> | |||
</li> | |||
</Fragment> | |||
`; | |||
exports[`should render correctly for bitbucket server 1`] = ` | |||
exports[`should render correctly for bitbucketcloud 1`] = ` | |||
<Fragment> | |||
<li> | |||
<FormattedMessage | |||
@@ -235,11 +244,11 @@ exports[`should render correctly for bitbucket server 1`] = ` | |||
values={ | |||
Object { | |||
"link": <a | |||
href="http://bbs.enterprise.com/plugins/servlet/webhooks/projects/PROJECT_KEY/repos/repo-slug/create" | |||
href="http://bitbucket.org/workspace/repo-slug/admin/addon/admin/bitbucket-webhooks/bb-webhooks-repo-admin" | |||
rel="noopener noreferrer" | |||
target="_blank" | |||
> | |||
onboarding.tutorial.with.jenkins.webhook.bitbucket.step1.link | |||
onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step1.link | |||
</a>, | |||
} | |||
} | |||
@@ -262,13 +271,8 @@ exports[`should render correctly for bitbucket server 1`] = ` | |||
</p> | |||
<CodeSnippet | |||
isOneLine={true} | |||
snippet="***JENKINS_SERVER_URL***/bitbucket-scmsource-hook/notify?server_url=http://bbs.enterprise.com" | |||
snippet="***JENKINS_SERVER_URL***/bitbucket-scmsource-hook/notify" | |||
/> | |||
<Alert | |||
variant="info" | |||
> | |||
onboarding.tutorial.with.jenkins.webhook.bitbucket.step1.url.warning | |||
</Alert> | |||
</li> | |||
</ul> | |||
</li> | |||
@@ -276,22 +280,23 @@ exports[`should render correctly for bitbucket server 1`] = ` | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"events", | |||
"triggers", | |||
"option", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2" | |||
/> | |||
<ul | |||
className="list-styled" | |||
> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2.repo" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2.repo" | |||
/> | |||
</li> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2.pr" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2.pr" | |||
/> | |||
</li> | |||
</ul> | |||
@@ -300,16 +305,16 @@ exports[`should render correctly for bitbucket server 1`] = ` | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"create", | |||
"save", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.step3" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step3" | |||
/> | |||
</li> | |||
</Fragment> | |||
`; | |||
exports[`should render correctly for bitbucket server: with branches disabled 1`] = ` | |||
exports[`should render correctly for bitbucketcloud: with branches disabled 1`] = ` | |||
<Fragment> | |||
<li> | |||
<FormattedMessage | |||
@@ -318,11 +323,11 @@ exports[`should render correctly for bitbucket server: with branches disabled 1` | |||
values={ | |||
Object { | |||
"link": <a | |||
href="http://bbs.enterprise.com/plugins/servlet/webhooks/projects/PROJECT_KEY/repos/repo-slug/create" | |||
href="http://bitbucket.org/workspace/repo-slug/admin/addon/admin/bitbucket-webhooks/bb-webhooks-repo-admin" | |||
rel="noopener noreferrer" | |||
target="_blank" | |||
> | |||
onboarding.tutorial.with.jenkins.webhook.bitbucket.step1.link | |||
onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step1.link | |||
</a>, | |||
} | |||
} | |||
@@ -354,17 +359,18 @@ exports[`should render correctly for bitbucket server: with branches disabled 1` | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"events", | |||
"triggers", | |||
"option", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2" | |||
/> | |||
<ul | |||
className="list-styled" | |||
> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2.repo" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2.repo" | |||
/> | |||
</li> | |||
</ul> | |||
@@ -373,16 +379,16 @@ exports[`should render correctly for bitbucket server: with branches disabled 1` | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"create", | |||
"save", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.step3" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step3" | |||
/> | |||
</li> | |||
</Fragment> | |||
`; | |||
exports[`should render correctly for bitbucket server: with no alm binding 1`] = ` | |||
exports[`should render correctly for bitbucketcloud: with no alm binding 1`] = ` | |||
<Fragment> | |||
<li> | |||
<FormattedMessage | |||
@@ -390,7 +396,9 @@ exports[`should render correctly for bitbucket server: with no alm binding 1`] = | |||
id="onboarding.tutorial.with.jenkins.webhook.step1.sentence" | |||
values={ | |||
Object { | |||
"link": "onboarding.tutorial.with.jenkins.webhook.bitbucket.step1.link", | |||
"link": <strong> | |||
onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step1.link | |||
</strong>, | |||
} | |||
} | |||
/> | |||
@@ -412,13 +420,8 @@ exports[`should render correctly for bitbucket server: with no alm binding 1`] = | |||
</p> | |||
<CodeSnippet | |||
isOneLine={true} | |||
snippet="***JENKINS_SERVER_URL***/bitbucket-scmsource-hook/notify?server_url=***BITBUCKET_URL***" | |||
snippet="***JENKINS_SERVER_URL***/bitbucket-scmsource-hook/notify" | |||
/> | |||
<Alert | |||
variant="info" | |||
> | |||
onboarding.tutorial.with.jenkins.webhook.bitbucket.step1.url.warning | |||
</Alert> | |||
</li> | |||
</ul> | |||
</li> | |||
@@ -426,22 +429,23 @@ exports[`should render correctly for bitbucket server: with no alm binding 1`] = | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"events", | |||
"triggers", | |||
"option", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2" | |||
/> | |||
<ul | |||
className="list-styled" | |||
> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2.repo" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2.repo" | |||
/> | |||
</li> | |||
<li> | |||
<LabelActionPair | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucket.step2.pr" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step2.pr" | |||
/> | |||
</li> | |||
</ul> | |||
@@ -450,10 +454,10 @@ exports[`should render correctly for bitbucket server: with no alm binding 1`] = | |||
<SentenceWithHighlights | |||
highlightKeys={ | |||
Array [ | |||
"create", | |||
"save", | |||
] | |||
} | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.step3" | |||
translationKey="onboarding.tutorial.with.jenkins.webhook.bitbucketcloud.step3" | |||
/> | |||
</li> | |||
</Fragment> |
@@ -151,7 +151,9 @@ exports[`should render correctly: with no alm binding 1`] = ` | |||
id="onboarding.tutorial.with.jenkins.webhook.step1.sentence" | |||
values={ | |||
Object { | |||
"link": "onboarding.tutorial.with.jenkins.webhook.github.step1.link", | |||
"link": <strong> | |||
onboarding.tutorial.with.jenkins.webhook.github.step1.link | |||
</strong>, | |||
} | |||
} | |||
/> |
@@ -69,3 +69,14 @@ export function buildGithubLink( | |||
return `${stripTrailingSlash(urlRoot)}/${projectBinding.repository}`; | |||
} | |||
export function buildBitbucketCloudLink( | |||
almBinding: AlmSettingsInstance, | |||
projectBinding: ProjectAlmBindingResponse | |||
) { | |||
if (almBinding.url === undefined || projectBinding.repository === undefined) { | |||
return null; | |||
} | |||
return `${stripTrailingSlash(almBinding.url)}/${projectBinding.repository}`; | |||
} |
@@ -144,8 +144,7 @@ export function mockProjectBitbucketCloudBindingResponse( | |||
return { | |||
alm: AlmKeys.BitbucketCloud, | |||
key: 'foo', | |||
repository: 'PROJECT_KEY', | |||
slug: 'repo-slug', | |||
repository: 'repo-slug', | |||
monorepo: true, | |||
...overrides | |||
}; |
@@ -220,7 +220,7 @@ zip.doFirst { | |||
} | |||
// Check the size of the archive | |||
zip.doLast { | |||
def minLength = 270000000 | |||
def minLength = 260000000 | |||
def maxLength = 290000000 | |||
def length = archiveFile.get().asFile.length() |