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

feat: Create deployartifactjavadoc composite action base (#28550) #30535

Merged
72 changes: 72 additions & 0 deletions .github/actions/core-cicd/deployment/deploy-javadoc/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Deploy Artifact Javadoc Composite Action

This GitHub composite action deploys Javadoc artifacts to the GitHub Packages registry and an AWS S3 bucket. It uses Maven to generate the Javadocs and AWS CLI to upload the generated documentation to a specified S3 URI.

## Inputs

- **ref**:
*Description*: Branch to build from.
*Required*: No
*Default*: `main`

- **github-token**:
*Description*: GitHub Token for authentication.
*Required*: Yes

- **release-version**:
*Description*: The version of the release.
*Required*: Yes

- **artifact-run-id**:
*Description*: The run ID of the core artifacts to restore classes from.
*Required*: No

- **aws-access-key-id**:
*Description*: AWS Access Key ID for authentication.
*Required*: Yes

- **aws-secret-access-key**:
*Description*: AWS Secret Access Key for authentication.
*Required*: Yes

- **aws-region**:
*Description*: AWS region for deployment.
*Required*: Yes
*Default*: `us-east-1`

## Steps

1. **Checkout**: Uses the `actions/checkout@v4` action to check out the specified branch.
2. **Maven Clean Build**: Runs a Maven clean install to build the project (skipping tests), only if `artifact-run-id` is not provided.
3. **Deploy Javadoc**: Runs Maven to generate Javadocs and restores classes from the specified artifact run ID if provided.
4. **Configure AWS Credentials**: Configures AWS credentials using the `aws-actions/configure-aws-credentials@v1` action.
5. **Generate/Push Javadoc**: Uploads the generated Javadoc to an S3 bucket using the AWS CLI.

## Example Usage

```yaml
name: Deploy Javadoc Workflow
on:
push:
branches:
- main

jobs:
deploy-javadoc:
runs-on: ubuntu-latest
steps:
- name: Deploy Artifact Javadoc
uses: ./.github/actions/deploy-artifact-javadoc
with:
ref: 'main'
github-token: ${{ secrets.GITHUB_TOKEN }}
release-version: '1.0.0'
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: 'us-east-1'
```

# Notes

- Ensure that the github-token, aws-access-key-id, and aws-secret-access-key inputs are provided securely using GitHub secrets.
- The artifact-run-id is optional and can be used to restore classes from previous artifact runs if necessary.
78 changes: 78 additions & 0 deletions .github/actions/core-cicd/deployment/deploy-javadoc/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: Deploy Artifact Javadoc
description: Deploys the Javadoc artifact to the GitHub Packages registry
inputs:
ref:
description: 'Branch to build from'
required: false
default: 'main'
github-token:
description: 'GitHub Token'
required: true
release-version:
description: 'The version of the release'
required: true
artifact-run-id:
description: 'The run id of the core artifacts'
aws-access-key-id:
description: 'AWS Access Key ID'
required: true
aws-secret-access-key:
description: 'AWS Secret Access Key'
required: true
aws-region:
description: 'AWS region'
default: 'us-east-1'
required: true

runs:
using: "composite"
steps:
- name: 'Checkout'
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}

- uses: ./.github/actions/core-cicd/maven-job
id: maven-clean
with:
stage-name: "Clean Build"
maven-args: "clean install -DskipTests"
generate-docker: false
cleanup-runner: true
github-token: ${{ inputs.github-token }}
if: inputs.artifact-run-id == ''

- uses: ./.github/actions/core-cicd/maven-job
id: maven-javadoc
with:
stage-name: "Deploy Javadoc"
maven-args: "javadoc:javadoc -pl :dotcms-core"
generate-docker: false
cleanup-runner: true
restore-classes: true
artifacts-from: ${{ inputs.artifact-run-id }}
github-token: ${{ inputs.github-token }}

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ inputs.aws-access-key-id }}
aws-secret-access-key: ${{ inputs.aws-secret-access-key }}
aws-region: ${{ inputs.aws-region }}

- name: Generate/Push Javadoc
if: success()
run: |
echo "::group::Generate/Push Javadoc"
site_dir=./dotCMS/target/site
javadoc_dir=${site_dir}/javadocs
s3_uri=s3://static.dotcms.com/docs/${{ inputs.release-version }}/javadocs
mv ${site_dir}/apidocs ${javadoc_dir}
# ls -R $javadoc_dir
echo "Running: aws s3 cp ${javadoc_dir} ${s3_uri} --recursive"
aws s3 cp ${javadoc_dir} ${s3_uri} --recursive
echo "::endgroup::"
env:
AWS_ACCESS_KEY_ID: ${{ inputs.aws-access-key-id }}
AWS_SECRET_ACCESS_KEY: ${{ inputs.aws-secret-access-key }}
shell: bash
2 changes: 2 additions & 0 deletions .github/actions/core-cicd/maven-job/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,8 @@ runs:
name: "build-classes"
path: |
**/target/classes/**/*.class
**/target/generated-sources/**/*.java
**/target/test-classes/**/*.class
LICENSE

- id: delete-built-artifacts-from-cache
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -433,4 +433,4 @@ jobs:
SLACK_FOOTER: ""
SLACK_ICON: https://avatars.slack-edge.com/temp/2021-12-08/2830145934625_e4e464d502865ff576e4.png
SLACK_MESSAGE: "<!channel> This automated script is excited to announce the release of a new version of dotCMS `${{ needs.prepare-release.outputs.release_version }}` :rocket:\n:docker: Produced images: [${{ needs.build-push-image.outputs.formatted_tags }}]"
if: success() && github.event.inputs.notify_slack == 'true'
if: success() && github.event.inputs.notify_slack == 'true'