Список DbConnection. Имена набора GetSchema?

1112 Я думаю, что решил это удовлетворительным образом. Вот пошаговое руководство:

  1. Убедитесь, что докер установлен в контейнере, который должен его запустить
  2. Создайте группу докеров и пользователя jenkins:
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

  1. В вашем конвейере запустите агент следующим образом: [ 119]
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

Надеюсь, это поможет .

11
задан P a u l 17 January 2009 в 17:45
поделиться

3 ответа

Я использую 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;
8
ответ дан 3 December 2019 в 08:05
поделиться

Список варьируется поставщиком. Поэтому некоторые Общие Наборы Схемы были определены, которые всегда доступны независимо от поставщика. Один из них является набором MetaDataCollections, который возвратит DataTable со списком поддерживаемых наборов схемы для текущего поставщика, количества ограничений, которые каждый из них поддерживает, и количество частей идентификатора, которые они используют.

4
ответ дан 3 December 2019 в 08:05
поделиться

Для Системы. Данные. SQLite я наконец нашел то, что поддерживается:

http://sqlite.phxsoftware.com/readme.htm

"DbConnection. GetSchema (...) поддерживают, включает ReservedWords, MetaDataCollections, DataSourceInformation, DataTypes, Столбцы, Таблицы, Представления, ViewColumns, Каталоги, Индексы, IndexColumns, ForeignKeys и Триггеры".

Я думаю, что SQL-сервер был бы о том же, но у меня все еще нет категорического списка.

2
ответ дан 3 December 2019 в 08:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: