Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The project needs a CD workflow to auto build & destribute releases. #4

Closed
amyXia1994 opened this issue Jan 11, 2023 · 1 comment
Closed
Assignees

Comments

@amyXia1994
Copy link
Contributor

Feature Request

Is your feature request related to a problem? Please describe:

The release of the plugin is now done manually and that takes lots of effort and storage.

Describe the feature you'd like:

use a github workflow to automatically build and distribute plugins on each IntelliJ version after the main branch is tagged by a version tag.

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

aciTags: DOCKER

stages: # 定义了一条pipeline
  - 测试
  - 构建发布包

PMD:
  stage: 测试
  plugin: PMD
  pluginConfig:
    encoding: UTF-8 # 编码设置
    excludes: # 排除哪些项不统计PMD
      - "src/main/gen/**"
  checkRule: # 校验结果
    - pmd1 = 0 && pmd2 = 0

单元测试:
  stage: 测试
  aciTags: DOCKER # 指定使用哪些runner
  steps:
    - plugin: clone
    - plugin: shell
      inputs:
        image: reg.docker.alibaba-inc.com/kusion/idea-plugin-builder:gradle6.9.0-jdk8-idea2020.2 # 指定使用哪个image
        command:
          - |
            export PLUGIN_VERSION=0.0.1 && export JDK_VERSION=8 && export IDEA_PLATFORM_VERSION="2020.2" && ./gradlew test
            chmod +x ./Scripts/coverage.sh
            echo ${WORKSPACE}
            PROJECT_ROOT=${WORKSPACE} ./Scripts/coverage.sh
    - plugin: coverage-client-upload-compass
      inputs:
        filePath: build/reports/cobertura.xml
  publisher:
    archiveArtifacts: 'build/jacocoHtml/,build/test-results/test/TEST-*.xml'
    allowEmptyResults: true
    junit: 'build/test-results/test/TEST-*.xml'
    html:
      index: build/jacocoHtml/index.html  #(html的入口)
      displayName: 覆盖率报告  #(html链接的展示名称 默认是 链接名称)
  only:
    triggerType:
      - pullRequest
      - push
2020.2 build:
  stage: 构建发布包 # 本阶段执行两个步骤,一是执行项目源代码编译,二是进行镜像的构建
  plugin: ANT-BUILD # 选用ANT-BUILD插件来驱动镜像构建
  only:
    triggerType:
      - tagPush
  pluginConfig:
    image: reg.docker.alibaba-inc.com/kusion/idea-plugin-builder:gradle6.9.0-jdk8-idea2020.2
    script:
      - cd ${LINKB_WORKSPACE}
      - export PLUGIN_VERSION=${ACI_COMMIT_REF_NAME}
      - export JDK_VERSION=8
      - export IDEA_PLATFORM_VERSION="2020.2"
      - ./gradlew buildPlugin
      - ./Scripts/ossutil64 cp ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}.zip oss://antsys-kusion-dev/KCL_IDE/IntelliJ-IDEA/2020-2/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}.zip --endpoint=http://cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com --access-key-id=${ACI_VAR_kusion_oss_ak} --access-key-secret=${ACI_VAR_kusion_oss_sk}
    outputs: # 纳入构建物列表
      - name: "kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2020.2.zip"
        desc: "KCL IDEA Plugin for IDEA 2020.2"
        paths: [ "./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}.zip" ]

2020.3 & 2021.1 & 2021.2 & 2021.3 & 2022.1:
  stage: 构建发布包
  plugin: ANT-BUILD
  only:
    triggerType:
      - tagPush
  pluginConfig:
    image: reg.docker.alibaba-inc.com/kusion/idea-plugin-builder:gradle6.9.0-jdk11-idea
    script:
      - cd ${LINKB_WORKSPACE}
      - export PLUGIN_VERSION=${ACI_COMMIT_REF_NAME}
      - export JDK_VERSION=11 && export IDEA_PLATFORM_VERSION="2020.3" && ./gradlew buildPlugin && mv ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}.zip ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2020.3.zip
      - export JDK_VERSION=11 && export IDEA_PLATFORM_VERSION="2021.1" && ./gradlew buildPlugin && mv ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}.zip ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2021.1.zip
      - export JDK_VERSION=11 && export IDEA_PLATFORM_VERSION="2021.2" && ./gradlew buildPlugin && mv ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}.zip ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2021.2.zip
      - export JDK_VERSION=11 && export IDEA_PLATFORM_VERSION="2021.3" && ./gradlew buildPlugin && mv ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}.zip ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2021.3.zip
      - export JDK_VERSION=11 && export IDEA_PLATFORM_VERSION="2022.1" && ./gradlew buildPlugin && mv ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}.zip ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2022.1.zip
      - ./Scripts/ossutil64 cp ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2020.3.zip oss://antsys-kusion-dev/KCL_IDE/IntelliJ-IDEA/2020-3/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}.zip --endpoint=http://cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com --access-key-id=${ACI_VAR_kusion_oss_ak} --access-key-secret=${ACI_VAR_kusion_oss_sk}
      - ./Scripts/ossutil64 cp ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2021.1.zip oss://antsys-kusion-dev/KCL_IDE/IntelliJ-IDEA/2021-1/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}.zip --endpoint=http://cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com --access-key-id=${ACI_VAR_kusion_oss_ak} --access-key-secret=${ACI_VAR_kusion_oss_sk}
      - ./Scripts/ossutil64 cp ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2021.2.zip oss://antsys-kusion-dev/KCL_IDE/IntelliJ-IDEA/2021-2/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}.zip --endpoint=http://cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com --access-key-id=${ACI_VAR_kusion_oss_ak} --access-key-secret=${ACI_VAR_kusion_oss_sk}
      - ./Scripts/ossutil64 cp ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2021.3.zip oss://antsys-kusion-dev/KCL_IDE/IntelliJ-IDEA/2021-3/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}.zip --endpoint=http://cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com --access-key-id=${ACI_VAR_kusion_oss_ak} --access-key-secret=${ACI_VAR_kusion_oss_sk}
      - ./Scripts/ossutil64 cp ./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2022.1.zip oss://antsys-kusion-dev/KCL_IDE/IntelliJ-IDEA/2022-1/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}.zip --endpoint=http://cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com --access-key-id=${ACI_VAR_kusion_oss_ak} --access-key-secret=${ACI_VAR_kusion_oss_sk}
    outputs: # 纳入构建物列表
      - name: "kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2020.3.zip"
        desc: "KCL IDEA Plugin for IDEA 2020.3"
        paths: [ "./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2020.3.zip" ]
      - name: "kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2021.1.zip"
        desc: "KCL IDEA Plugin for IDEA 2021.1"
        paths: [ "./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2021.1.zip" ]
      - name: "kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2021.2.zip"
        desc: "KCL IDEA Plugin for IDEA 2021.2"
        paths: [ "./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2021.2.zip" ]
      - name: "kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2021.3.zip"
        desc: "KCL IDEA Plugin for IDEA 2021.3"
        paths: [ "./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2021.3.zip" ]
      - name: "kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2022.1.zip"
        desc: "KCL IDEA Plugin for IDEA 2022.1"
        paths: [ "./build/distributions/kcl-idea-plugin-${ACI_COMMIT_REF_NAME}-2022.1.zip" ]

notifications:
  dingding监听消息:
    type: DINGTALK
    level: PIPELINE
    when: ALWAYS
    channels:
      - https://oapi.dingtalk.com/robot/send?access_token=5d2b5c42f363ff9f6bc008fc25d6b54c0a3e1fd828c535d0a2553bc9f6362034
@amyXia1994 amyXia1994 self-assigned this Jan 11, 2023
@He1pa
Copy link
Contributor

He1pa commented Jul 29, 2024

https://plugins.jetbrains.com/docs/intellij/publishing-plugin.html#publishing-plugin-with-gradle

@He1pa He1pa closed this as completed Aug 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants