diff --git a/.github/workflows/generate.yml b/.github/workflows/generate.yml new file mode 100644 index 0000000000..2333939453 --- /dev/null +++ b/.github/workflows/generate.yml @@ -0,0 +1,88 @@ +name: Generate + +on: + workflow_dispatch: + inputs: + kubernetesBranch: + type: string + required: true + description: 'The remote kubernetes release branch to fetch openapi spec. .e.g. "release-1.23"' + + +jobs: + generate: + runs-on: ubuntu-latest + steps: + - name: Checkout Java + uses: actions/checkout@v3 + - name: Setup Java + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: 8.0.x + - name: Checkout Gen + uses: actions/checkout@v3 + with: + path: gen + repository: kubernetes-client/gen + token: ${{ secrets.PAT_TOKEN }} + - name: Generate Branch Name + run: | + SUFFIX=$(openssl rand -hex 4) + echo "BRANCH=automated-generate-$SUFFIX" >> $GITHUB_ENV + - name: Get Project Version + run: | + echo "PROJECT_VERSION=$(mvn -q \ + -Dexec.executable="echo" \ + -Dexec.args='${project.version}' \ + --non-recursive \ + org.codehaus.mojo:exec-maven-plugin:1.6.0:exec)" >> $GITHUB_ENV + - name: Generate Openapi + run: | + pushd gen/openapi + cat <<"EOF"> settings + # Kubernetes branch to get the OpenAPI spec from. + export KUBERNETES_BRANCH="${{ github.event.inputs.kubernetesBranch }}" + + # client version for packaging and releasing. It can + # be different than SPEC_VERSION. + export CLIENT_VERSION=${{ env.PROJECT_VERSION }} + + # Name of the release package + export PACKAGE_NAME="io.kubernetes.client.openapi" + EOF + + bash java.sh ../../kubernetes/ settings + popd + rm -rf gen + - name: Generate Fluent + run: | + # Only install the generated openapi module because the higher modules' compile + # may fail due to api-changes. + mvn -Pfluent-gen -pl kubernetes -am clean install + pushd fluent-gen + bash -x generate.sh + popd + - name: Formatter + run: | + mvn spotless:apply + - name: Commit and push + run: | + # Commit and push + git config user.email "k8s.ci.robot@gmail.com" + git config user.name "Kubernetes Prow Robot" + git checkout -b "$BRANCH" + git add . + git commit -s -m 'Automated openapi generation from ${{ github.event.inputs.kubernetesBranch }}' + git push origin "$BRANCH" + - name: Pull Request + uses: repo-sync/pull-request@v2 + with: + source_branch: ${{ env.BRANCH }} + destination_branch: ${{ github.ref_name }} + github_token: ${{ secrets.GITHUB_TOKEN }} + pr_title: "Automated Generate from openapi ${{ github.event.inputs.kubernetesBranch }}" + + + + diff --git a/.gitignore b/.gitignore index af329204b3..32978f1b86 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ */target/ target/ **/.factorypath +gen/** # Mobile Tools for Java (J2ME) .mtj.tmp/ diff --git a/fluent-gen/README.md b/fluent-gen/README.md index 1633d0057d..cbe6a3e4c5 100644 --- a/fluent-gen/README.md +++ b/fluent-gen/README.md @@ -4,23 +4,9 @@ Start from a totally clean environment (eg. a clean VM if you can), clone everything. ## Step one -Comment out the existing fluent module from the pom.xml - -```xml -... - -... -``` +`mvn -Pfluent-gen install` ## Step two -`mvn install` - -## Step three ``` cd fluent-gen; ./generate.sh ``` diff --git a/fluent-gen/generate.sh b/fluent-gen/generate.sh index 4c6b760aa2..2d18162d2b 100755 --- a/fluent-gen/generate.sh +++ b/fluent-gen/generate.sh @@ -3,6 +3,5 @@ # TODO: Incorporate this into the pom.xml rm -r ../fluent/src/main/java/io -mvn clean -mvn compile +mvn -Pfluent-gen clean compile mv target/generated-sources/annotations/io ../fluent/src/main/java/io