1112 Я думаю, что решил это удовлетворительным образом. Вот пошаговое руководство:
CMD DOCKER_GID=$(stat -c '%g' /var/run/docker.sock) && \
groupmod --gid ${DOCKER_GID} ${DOCKER_GROUP} && \
usermod -a -G ${DOCKER_GROUP} ${JENKINS_USER} && \
gosu jenkins sh
Важно отметить, что здесь я выбираю идентификатор группы базовой системы, которая запускает Docker. Поскольку я уже установил докер в свой контейнер и группа уже существует, я изменяю существующую группу, чтобы она соответствовала идентификатору группы системы. Наконец, я добавляю пользователя jenkins в группу Docker. Ваша / etc / group должна выглядеть примерно так в контейнере после его запуска:
docker: x: 999: jenkins
agent {
docker {
image 'storemanager-build'
args '-u root -v /var/run/docker.sock:/var/run/docker.sock'
}
}
Предоставляя флаг -u root
, вы переопределяете пользователя jenkins
, который jenkins навязывает вам при использовании декларативного конвейера. Вы должны использовать root для того, чтобы команда CMD работала и могла создавать группу.
Когда образ работает, команда переключится на пользователя jenkins, которому разрешен доступ к базовому сокету unix.
Вот отрывок из моего Jenkinsfile:
pipeline {
agent {
docker {
image 'build-image'
args '-u root -v /var/run/docker.sock:/var/run/docker.sock'
}
}
stages {
stage('Build jar') {
steps {
dir("${WORKING_DIRECTORY}") {
script {
if (isUnix()) {
sh './mvnw --batch-mode clean install'
} else {
bat 'mvnw.cmd --batch-mode clean install'
}
}
}
}
}
stage('Build and push image(s)') {
steps {
dir("${WORKING_DIRECTORY}") {
script {
amd64image = docker.build("${IMAGE_NAME}", "-f ./Dockerfile.amd64 .")
arm32v7image = docker.build("${IMAGE_NAME}", "-f ./Dockerfile.arm32v7 .")
}
script {
docker.withRegistry("${DOCKER_REGISTRY_URL}", "${STOREMANAGER_REPOSITORY_CREDENTIALS}") {
amd64image.push("${BUILD_NUMBER}-amd64")
arm32v7image.push("${BUILD_NUMBER}-arm32v7")
}
}
}
}
}
}
post {
always {
sh "chmod -R 777 ." // Jenkins can't clean built resources without this as we run the container as root
cleanWs()
}
}
}
И ресурсы, которые мне помогли:
https://jpetazzo.github.io/2015/09/03 / do-not-use-docker-in-docker-for-ci / https://github.com/jenkinsci/docker/issues/196
Надеюсь, это поможет .
Я использую OleDbConnection, даже если я соединяюсь с Oracle, SQL-сервером... Затем я могу использовать:
myOleDbConnection.GetOleDbSchemaTable(OleDbSchemGuid.Tables);
Возможные значения для OleDbSchemaGuid:
(обратите внимание, что в зависимости от базы данных некоторые из них может выдать Исключение NotSupported:
OleDbSchemaGuid.Assertions;
OleDbSchemaGuid.Catalogs;
OleDbSchemaGuid.Character_Sets;
OleDbSchemaGuid.Check_Constraints;
OleDbSchemaGuid.Check_Constraints_By_Table;
OleDbSchemaGuid.Collations;
OleDbSchemaGuid.Column_Domain_Usage;
OleDbSchemaGuid.Column_Privileges;
OleDbSchemaGuid.Columns;
OleDbSchemaGuid.Constraint_Column_Usage;
OleDbSchemaGuid.Constraint_Table_Usage;
OleDbSchemaGuid.DbInfoKeywords;
OleDbSchemaGuid.DbInfoLiterals;
OleDbSchemaGuid.Foreign_Keys;
OleDbSchemaGuid.Indexes;
OleDbSchemaGuid.Key_Column_Usage;
OleDbSchemaGuid.Primary_Keys;
OleDbSchemaGuid.Procedure_Columns;
OleDbSchemaGuid.Procedure_Parameters;
OleDbSchemaGuid.Procedures;
OleDbSchemaGuid.Provider_Types;
OleDbSchemaGuid.Referential_Constraints;
OleDbSchemaGuid.SchemaGuids;
OleDbSchemaGuid.Schemata;
OleDbSchemaGuid.Sql_Languages;
OleDbSchemaGuid.Statistics;
OleDbSchemaGuid.Table_Constraints;
OleDbSchemaGuid.Table_Privileges;
OleDbSchemaGuid.Table_Statistics;
OleDbSchemaGuid.Tables;
OleDbSchemaGuid.Tables_Info;
OleDbSchemaGuid.Translations;
OleDbSchemaGuid.Trustee;
OleDbSchemaGuid.Usage_Privileges;
OleDbSchemaGuid.View_Column_Usage;
OleDbSchemaGuid.View_Table_Usage;
OleDbSchemaGuid.Views;
Список варьируется поставщиком. Поэтому некоторые Общие Наборы Схемы были определены, которые всегда доступны независимо от поставщика. Один из них является набором MetaDataCollections, который возвратит DataTable со списком поддерживаемых наборов схемы для текущего поставщика, количества ограничений, которые каждый из них поддерживает, и количество частей идентификатора, которые они используют.
Для Системы. Данные. SQLite я наконец нашел то, что поддерживается:
http://sqlite.phxsoftware.com/readme.htm
"DbConnection. GetSchema (...) поддерживают, включает ReservedWords, MetaDataCollections, DataSourceInformation, DataTypes, Столбцы, Таблицы, Представления, ViewColumns, Каталоги, Индексы, IndexColumns, ForeignKeys и Триггеры".
Я думаю, что SQL-сервер был бы о том же, но у меня все еще нет категорического списка.