从alpine构建预装vcpkg的docker image用于gitea actions CI

news/2024/7/14 18:13:54/文章来源:https://blog.csdn.net/qq_43698957/article/details/139226030

动机

想要构建一个基于vcpkg的交叉编译容器平台用于cpp项目的CI(自动集成),此处仅提供最基础的image,amd64的机子上构建完成后大小为533兆(着实不小😓),各位看官可以在此基础上自行构建需要的版本。

hello world效果展示

在这里插入图片描述
在这里插入图片描述

corss_compiler.dockerfile

FROM alpine:latest
RUN apk update && apk upgrade
RUN apk add --no-cache build-base
RUN apk add --no-cache cmake
RUN apk add --no-cache wget
RUN apk add --no-cache zip
RUN apk add --no-cache unzip
RUN apk add --no-cache curl
RUN apk add --no-cache git
RUN apk add --no-cache nodejs
RUN apk add --no-cache re2c
RUN apk add --no-cache pkgconf
# 安装ninja-1.10.2 apk安装的固定为1.9版本 但vcpkg需要版本>=1.10.2,所以从源码来安装
# 种种原因如果wget下载失败就下载好了再拷贝进来
RUN cd /home && wget https://github.com/ninja-build/ninja/archive/refs/tags/v1.10.2.tar.gz -o ninja-1.10.2.tar.gz
# COPY ninja-1.10.2.tar.gz /home
RUN cd /home && tar -axvf ninja-1.10.2.tar.gz && rm ninja-1.10.2.tar.gz
RUN cd /home && cd ninja-1.10.2 && mkdir build && cd build && cmake .. && cmake --build . && make && make install
RUN cd /home && rm -r ninja-1.10.2
# 这一步执行时间较长失败请重试,请务必完全克隆vcpkg仓库,因为vcpkg的基线管理是基于git commit的sha码的详情请看vcpkg的相关文档,如果想要每次使用最新的版本不锁定库的版本,请每次执行工作流的时候使用git pull拉取最新的vcpkg
RUN cd /home && git clone https://github.com/microsoft/vcpkg.git && cd vcpkg && sh bootstrap-vcpkg.sh
# 设置VCPKG_ROOT 环境变量,项目中的cmake脚本中使用该变量即可找到vcpkg的安装位置
ENV VCPKG_ROOT /home/vcpkg
# 此处之后可以预先下载编译一些库用于离线状态下的安装并加可以快工作流的速度
RUN cd /home/vcpkg && ./vcpkg install gtest:x64-linux

写好dockerfile后执行构建镜像,有代理的话使用代理可以更快完成

docker build . \-f corss_compiler.dockerfile \-t alpine-cross \--build-arg HTTP_PROXY=$HTTP_PROXY--build-arg HTTPs_PROXY=$HTTPS_PROXY

工作流

测试的工作流供参考,此处就不贴被测源码了

name: Gitea Actions Demo2
run-name: ${{ github.actor }} is testing out Gitea Actions 🚀
on: [push]
jobs:Explore-Gitea-Actions2:runs-on: ubuntu-latestcontainer:image: alpine-cross:lateststeps:- run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"- run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."- name: Check out repository codeenv:GITHUB_TOKEN: ${{ github.token }}run: |git clone --depth=1 http://$GITHUB_TOKEN@192.168.1.100:3000/xxxxx/cpp_proj_template.gitcd cpp_proj_template/unittestsh test4x64_g++_linux_release.sh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1054020.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性能测试(一)—— 性能测试理论+jmeter的使用

1.性能测试介绍 定义:软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。 由定义可知性能关注的是软件的非功能特性,所以一般来说性能测试介入的时机是在功能测试完…

Jetson Orin Nano v6.0 + tensorflow2.15.0+nv24.05 GPU版本安装

Jetson Orin Nano v6.0 tensorflow2.15.0nv24.05 GPU版本安装 1. 源由2. 步骤2.1 Step1:系统安装2.2 Step2: nvidia-jetpack安装2.3 Step3:jtop安装2.4 Step4:h5py安装2.5 Step5:tensorflow安装2.6 Step6:jupyterlab安…

SpringBoot——数据访问

优质博文:IT-BLOG-CN 对于数据访问层,无论是 SQL 还是 NoSQL,SpringBoot 默认采用整合 Spring Data 的方式进行统一处理,添加大量自动配置,屏蔽了很多设置。引入各种 xxxTemplate,xxxRepository 来简化我…

2024年上半年软件系统架构师考试【回忆版】

文章目录 考试时间考试地点综合知识案例分析1、微服务架构的优点和缺点2、质量属性的6个要素3、分布式锁 Redis的缺点4、MongoDB 存储矢量图的优势 论文回忆版论文一、论单元测试的设计与应用论文二、论大数据模型的设计与应用论文三、论模型驱动的架构设计及应用论文四、论云自…

Spring Boot中如何查询PGSQL分表后的数据

数据库用的pgsql,在表数据超过100w条的时候执行定时任务进行了分表,分表后表名命名为原的表名后面拼接时间,如原表名是card_device_trajectory_info,分表后拼接时间后得到card_device_trajectory_info_20240503,然后分…

量子密钥分发系统基础器件(一):光纤干涉仪

干涉仪的基本原理是利用波的叠加来获得波的相位信息,从而获取实验中所关心的物理量。光纤干涉仪是由光学干涉仪发展而来的,利用光纤实现光的干涉,由于光纤取代透镜系统构成的光路具有柔软、形状可随意变化、传输距离远等特点,当前…

RT-DETR算法改进【NO.1】借鉴CVPR2024中的StarNet网络StarBlock改进算法

前 言 YOLO算法改进的路有点拥挤,尝试选择其他的baseline作为算法研究,可能会更加好发一些文章。后面将陆续介绍RT-DETR算法改进的方法思路。 很多朋友问改进如何选择是最佳的,下面我就根据个人多年的写作发文章以及指导发文章的经验来看,按照优先顺序进行排序讲解…

HTML静态网页成品作业(HTML+CSS)——动漫熊出没介绍网页(3个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有3个页面。 二、作品演示 三、代…

如何使用git上传linux下的项目!---附带每一步截图

在实际项目中,我们需要把自己的模块递给GitHub,需要别人的模块的时候拉下来,那么我们怎么把自己的项目递给GitHub呢?下面做一个总结: 登录GitHub 创建一个仓库 填写相关信息 项目名称是必填的,项目描述可以…

09Django项目--用户管理系统--删

对应视频链接点击直达 09Django项目--用户管理系统--删 对应视频链接点击直达删a,本质b,删除 页面相关a,index页面新增操作按钮b,ajax删除和提示c,完整版本 OVER,不会有人不会吧不会的加Q1394006513结语 一…

冯喜运:5.29市场避险情绪升温,黄金原油小幅收涨

【黄金消息面分析】:周二(5月28日)美盘时段,由于美元走弱且市场情绪出现负面变化,黄金收复早前跌幅,站上2350美元关口。金价早盘一度走弱,源于美联储降息可能性降低带来压力,投资者在…

(四十八)第 7 章 图(图的数组(邻接矩阵)存储)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strrch…

关于已配好java环境但双击无法打开jar包的解决方案

如果你已经装好了 java 环境直接跳到最后看解决方法即可 先说一下你安装的 java 环境&#xff0c;如果完全是默认选项安装&#xff0c;则会安装 jdk 和 jre&#xff0c;并且在安装 jre 时还需要安装目录下为空&#xff0c;其实 jre 的安装是多余的&#xff0c;因为安装的 jdk 里…

LES物流执行系统,在离散制造行业有那些作用和价值?

离散制造企业往往面临的是多品种、小批量的非标订单生产&#xff0c;传统推动式物流系统已经无法应对计划变化滞后&#xff0c;各车间、工序之间难以衔接等情况&#xff0c;特别是密集劳动力的电子行业&#xff0c;非标产品 SKU 种类繁多&#xff0c;物料配送复杂&#xff0c;对…

Sentinel-2 哨兵二号数据介绍及下载

1 Sentinel-2简介 SENTINEL-2 is a European wide-swath, high-resolution, multi-spectral imaging mission. Sentinel-2 是高分辨率多光谱成像卫星&#xff0c;一颗卫星的重访周期为10天&#xff0c;两颗互补&#xff0c;重访周期为5天。分为2A和2B两颗卫星。2A于2015年6月…

【ubuntu20】--- 定时同步文件

在编程的艺术世界里&#xff0c;代码和灵感需要寻找到最佳的交融点&#xff0c;才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里&#xff0c;我们将共同追寻这种完美结合&#xff0c;为未来的世界留下属于我们的独特印记。 【Linux命令】--- 多核压缩命令大全&…

【IDEA】Redis可视化神器

在开发过程中&#xff0c;为了方便地管理 Redis 数据库&#xff0c;我们可能会使用一些数据库可视化插件。这些插件通常可以帮助你在 IDE 中直观地查看和管理 Redis 数据库&#xff0c;包括查看键值对、执行命令、监视数据库活动等。 IDEA作为IDE界的Jenkins&#xff0c;本身自…

基于OrangePi AIpro的后端服务器构建

一. OrangePi AIpro简介 1.1 OrangePi AIpro外观 1.2 OrangePi AIpro配置 OrangePi AIpro(8T)采用昇腾AI技术路线&#xff0c;具体为4核64位处理器AI处理器&#xff0c;集成图形处理器&#xff0c;支持8TOPS AI算力&#xff0c;拥有8GB/16GB LPDDR4X&#xff0c;可以外接32GB…

[java基础揉碎]文件IO流

目录 文件 什么是文件 文件流​编辑 常用的文件操作 创建文件方式一 创建文件方式二 创建文件方式三 tip:为什么new file 了还有执行createNewFile?new File的时候其实是在内存中创建了文件对象, 还没有在磁盘中, 当执行createNewFile的时候才是往磁盘中写入​编辑 …

Apache、Nginx、IIS文件解析漏洞

目录 1、文件解析漏洞介绍 2、Apache相关的解析漏洞 &#xff08;1&#xff09;多后缀解析漏洞 &#xff08;2&#xff09;Apache配置问题 &#xff08;3&#xff09;换行符解析漏洞 &#xff08;4&#xff09;罕见后缀解析 3、Nginx相关的解析漏洞 &#xff08;1&…