name: Eclipse LS Extensions Build # configure manual trigger #on: # workflow_dispatch: on: workflow_call: inputs: build_type: description: Build type such as 'snapshot', 'milestone' or 'release' required: true default: 'snapshot' type: string eclipse_profile: description: Eclipse profile 'e427' etc required: false default: 'e428' type: string skip_tests: description: skip ls tests execution required: false default: true type: boolean sts4-language-servers-version: description: version of sts4 ls extensions required: false type: string ref: description: Git branch, tag, commit hash required: false default: 'main' type: string jobs: eclipse-language-servers-build: runs-on: macos-latest-xl steps: - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 with: sparse-checkout: | .github headless-services eclipse-language-servers - name: Set up JDK 17 uses: actions/setup-java@5ffc13f4174014e2d4d4572b3d74c3fa61aeb2c2 with: java-version: '17' distribution: 'temurin' - name: Enforce https instead of http run: ./nohttp.sh - name: Build Language Servers JARs run: | cd headless-services if command -v xvfb-run ; then xvfb-run ./mvnw --batch-mode clean install -DskipTests=${{ inputs.skip_tests }} else ./mvnw --batch-mode clean install -DskipTests=${{ inputs.skip_tests }} fi - name: Install GPG key run: | echo "${{ secrets.GPG_PRIVATE_KEY }}" > gpg.asc echo "${{ secrets.GPG_PASSPHRASE }}" | gpg --batch --yes --passphrase-fd 0 --import gpg.asc - name: Akamai Setup id: akamai-setup env: AWS_ACCESS_KEY_ID: ${{ secrets.TOOLS_CLOUDGATE_ACCESS_KEY }} AWS_SECRET_ACCESS_KEY: ${{ secrets.TOOLS_CLOUDGATE_SECRET_KEY }} TOOLS_CLOUDGATE_ACCOUNT_ID: ${{ secrets.TOOLS_CLOUDGATE_ACCOUNT_ID }} TOOLS_CLOUDGATE_USER: ${{ secrets.TOOLS_CLOUDGATE_USER }} AWS_DEFAULT_REGION: us-east-1 run: | export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s" \ $(aws sts assume-role \ --role-arn arn:aws:iam::${{ secrets.TOOLS_CLOUDGATE_ACCOUNT_ID }}:role/${{ secrets.TOOLS_CLOUDGATE_USER }} \ --role-session-name gha-upload \ --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \ --output text)) echo "AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID" >> $GITHUB_ENV echo "AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY" >> $GITHUB_ENV echo "AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN" >> $GITHUB_ENV echo "AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION" >> $GITHUB_ENV - name: Test Akamai Upload env: AWS_DEFAULT_REGION: us-east-1 run: | file="upload-test.txt" echo 'Upload test file' > $file cat $file echo $AWS_SESSION_TOKEN aws s3 mv ./$file s3://tools-spring-io/test-akamai/$file aws s3 rm s3://tools-spring-io/test-akamai/$file - name: Build Eclipse LS extensions env: gpg_passphrase: ${{ secrets.GPG_PASSPHRASE }} gpg_keyname: ${{ secrets.GPG_KEYID }} run: | sts4_ls_version=${{ inputs.sts4-language-servers-version }} sts4_ls_version_param="" if ! [[ -z ${sts4_ls_version} ]]; then sts4_ls_version_param="-Ddist.version=${sts4_ls_version}" fi cd eclipse-language-servers if command -v xvfb-run ; then xvfb-run ./mvnw --batch-mode clean deploy -P${{ inputs.eclipse_profile }} -P${{ inputs.build_type }} $sts4_ls_version_param -Pgitactions -Pgpg.sign -Dmaven.test.skip=true -Dsigning.skip=true -Dhttpclient.retry-max=20 -Declipse.p2.mirrors=false -Ds3service.https-only=true -Dtycho.localArtifacts=ignore else ./mvnw --batch-mode clean deploy -P${{ inputs.eclipse_profile }} -P${{ inputs.build_type }} $sts4_ls_version_param -Pgitactions -Pgpg.sign -Dmaven.test.skip=true -Dsigning.skip=true -Dhttpclient.retry-max=20 -Declipse.p2.mirrors=false -Ds3service.https-only=true -Dtycho.localArtifacts=ignore fi - name: Clear S3 Caches if: ${{ inputs.build_type != 'snapshot' }} env: CLOUDFLARE_ZONE_ID: ${{ secrets.CLOUDFLARE_ZONE_ID }} CLOUDFLARE_CACHE_TOKEN: ${{ secrets.CLOUDFLARE_CACHE_TOKEN }} run: | dist_path=`cat ${{ github.workspace }}/eclipse-language-servers/org.springframework.tooling.ls.integration.repository/target/s3-p2-repo-dist-path.txt` ${{ github.workspace }}/.github/scripts/clear-s3-caches.sh $dist_path - name: Verify Eclipse LS Extensions on e430 if: ${{ inputs.build_type == 'snapshot' }} run: | cd eclipse-language-servers if command -v xvfb-run ; then xvfb-run ./mvnw --batch-mode clean package -Pe430 -P${{ inputs.build_type }} -Dsigning.skip=true -Dhttpclient.retry-max=20 -Declipse.p2.mirrors=false -Ds3service.https-only=true -Dmaven.test.skip=true -Dtycho.localArtifacts=ignore else ./mvnw --batch-mode clean package -Pe430 -P${{ inputs.build_type }} -Dsigning.skip=true -Dhttpclient.retry-max=20 -Declipse.p2.mirrors=false -Ds3service.https-only=true -Dmaven.test.skip=true -Dtycho.localArtifacts=ignore fi notify-failure: needs: [ eclipse-language-servers-build ] if: ${{ always() && contains(needs.*.result, 'failure') }} uses: ./.github/workflows/notify-failed.yml with: md_message: "*Failed LS Extensions ${{ inputs.build_type }} Build:* <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|${{ github.run_id }}>" secrets: inherit