From edd42b4fda238022573fc809d6fefa891063cd43 Mon Sep 17 00:00:00 2001 From: Yellow Shine Date: Thu, 14 Nov 2024 18:36:50 +0800 Subject: [PATCH] feat: build and push pipeline Signed-off-by: Yellow Shine --- .github/workflows/build-and-push.yml | 78 ++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 .github/workflows/build-and-push.yml diff --git a/.github/workflows/build-and-push.yml b/.github/workflows/build-and-push.yml new file mode 100644 index 0000000..d4dbf4f --- /dev/null +++ b/.github/workflows/build-and-push.yml @@ -0,0 +1,78 @@ +name: build and push package to artifactory +description: build a conan package and push it to artifactory +on: + workflow_dispatch: + inputs: + + package: + description: 'package name' + required: true + version: + description: 'package version' + required: true + + conanfile_path: + description: 'the conanfile.py path of the package ' + required: true + default: 'all/conanfile.py' + + repository: + description: 'Choose Artifactory repository' + required: false + type: choice + options: + - production + - testing + default: 'testing' + + user_channel: + description: 'define the user and channel for the package ' + required: false + default: '' +jobs: + sync-conan-package: + runs-on: ubuntu-latest + env: + CONAN_REVISIONS_ENABLED: 1 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.13' + + - name: Install Conan + run: | + pip install --user conan==1.65.0 + conan --version + + - name: Configure Conan remote + run: | + if [ "${{ github.event.inputs.repository }}" = "production" ]; then + conan remote add artifactory https://milvus01.jfrog.io/artifactory/api/conan/default-conan-local + else + # for testing purpose + conan remote add artifactory https://milvus01.jfrog.io/artifactory/api/conan/testing + fi + + # List remote Conan repositories; should include Conan Center by default + conan remote list + + - name: build a package + run: | + + + conanfile_path="${{ github.event.inputs.package }}/${{ github.event.inputs.conanfile_path }}" + conan create $conanfile_path ${{ github.event.inputs.package }}/${{ github.event.inputs.version }}@ --build=missing -s compiler=gcc -s compiler.version=11 -s compiler.libcxx=libstdc++11 -s build_type=Release + + + - name: inspect built package + run: | + conan search '*' --revisions + + - name: Upload + run: | + conan user -p ${{ secrets.JFROG_PASSWORD }} -r artifactory ${{ secrets.JFROG_USERNAME }} + + # upload all packages + # Upload only the Conan recipe to the specified local repository, excluding binaries + conan upload '*' -r artifactory -c \ No newline at end of file