From 6edc3a9fc70cf878bab76e976c51c849f58063a2 Mon Sep 17 00:00:00 2001 From: Matthew Bystedt Date: Thu, 16 Jan 2025 15:37:03 -0800 Subject: [PATCH] feat: run composer --- .github/workflows/build-intention.json | 4 +- .github/workflows/build-release.yaml | 2 +- .github/workflows/deploy.yaml | 200 ------------------------- app-config.yaml => catalog-info.yaml | 1 + 4 files changed, 5 insertions(+), 202 deletions(-) rename app-config.yaml => catalog-info.yaml (97%) diff --git a/.github/workflows/build-intention.json b/.github/workflows/build-intention.json index ca9a97d..28335b4 100644 --- a/.github/workflows/build-intention.json +++ b/.github/workflows/build-intention.json @@ -15,11 +15,13 @@ "environment": "tools" }, "package": { + "architecture": "nodejs", "version": "", "buildVersion": "", "buildNumber": 0, "name": "nodejs-sample", - "type": "application/vnd.oci.image.layer.v1.tar+gzip" + "type": "application/vnd.oci.image.layer.v1.tar+gzip", + "license": "Apache-2.0" } } ], diff --git a/.github/workflows/build-release.yaml b/.github/workflows/build-release.yaml index 45d20e1..b0a2447 100644 --- a/.github/workflows/build-release.yaml +++ b/.github/workflows/build-release.yaml @@ -115,7 +115,7 @@ jobs: curl -s POST ${{ env.BROKER_URL }}/v1/intention/action/patch \ -H 'Content-Type: application/json' \ -H 'X-Broker-Token: '"${BUILD_TOKEN}"'' \ - -d '{"package":{"checksum": "sha256:'${ARTIFACT_SHA256}'", "size": '${ARTIFACT_SIZE}'}}' + -d '{"package":{"checksum": "'${ARTIFACT_SHA256}'", "size": '${ARTIFACT_SIZE}'}}' env: ARTIFACT_SHA256: ${{ steps.publish-artifact.outputs.artifact_sha256 }} ARTIFACT_SIZE: ${{ steps.publish-artifact.outputs.artifact_size }} diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index efd9529..e69de29 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -1,200 +0,0 @@ -name: Deploy - -on: - workflow_dispatch: - inputs: - config_branch: - description: 'Use branch for testing configuration changes' - required: false - type: string - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -env: - SERVICE_PROJECT: nodejs-sample - SERVICE_NAME: nodejs-sample - JOB: buildByToken/buildWithParameters?job=nodejs-sample/nodejs-sample - URL: https://cd.io.nrs.gov.bc.ca - PACKAGE_REPO: https://maven.pkg.github.com/ - -jobs: - check_token_expiration: - uses: ./.github/workflows/check-token.yaml - secrets: - token: ${{ secrets.broker_jwt_BFB8F8BC_D617_484A_9A4E_E9B98AB4E5BC }} - deploy-build: - name: Deploy development version - if: ${{ ! startsWith(github.ref, 'refs/tags/') }} - runs-on: ubuntu-latest - needs: check_token_expiration - outputs: - project_version: ${{ steps.set-build-output.outputs.project_version }} - build_guid: ${{ steps.set-build-output.outputs.build_guid }} - build_number: ${{ steps.set-build-output.outputs.build_number }} - artifact_name: ${{ steps.set-build-output.outputs.artifact_name }} - artifact_sha256: ${{ steps.set-build-output.outputs.artifact_sha256 }} - download_url: ${{ steps.set-download-url.outputs.download_url }} - steps: - - name: Set build output - id: set-build-output - run: | - RESPONSE=$(curl -s -X 'POST' \ - "${BROKER_URL}/v1/intention/search?where=%7B%22actions.action%22%3A%22package-build%22%2C%22actions.service.project%22%3A%22${SERVICE_PROJECT}%22%2C%22actions.service.name%22%3A%22${SERVICE_NAME}%22%2C%22actions.package.buildVersion%22%3A%22${GITHUB_SHA}%22%7D&offset=0&limit=1" \ - -H 'accept: application/json' \ - -H 'Authorization: Bearer '"${BROKER_JWT}"'' \ - -d '') - if echo "$RESPONSE" | jq -e '.statusCode == 401' > /dev/null; then - echo "Status code is 401. This indicates an authorization error." - echo "Please check if your Broker Token is valid. Teams can generate a new one in Broker if needed." - echo "Link: https://broker.io.nrs.gov.bc.ca/browse/brokerAccount" - echo "Exiting..." - exit 1 - fi - echo "project_version=$(echo ${RESPONSE} | jq -r '.data[].actions[].package.version')" >> $GITHUB_OUTPUT - echo "build_guid=$(echo ${RESPONSE} | jq -r '.data[].id')" >> $GITHUB_OUTPUT - echo "build_number=$(echo ${RESPONSE} | jq -r '.data[].actions[].package.buildNumber')" >> $GITHUB_OUTPUT - echo "artifact_name=$(echo ${RESPONSE} | jq -r '.data[].actions[].artifacts[].name')" >> $GITHUB_OUTPUT - artifact_checksum=$(echo ${RESPONSE} | jq -r '.data[].actions[].artifacts[].checksum') - echo "artifact_sha256=${artifact_checksum#sha256:}" >> $GITHUB_OUTPUT - env: - BROKER_URL: https://broker.io.nrs.gov.bc.ca - BROKER_JWT: ${{ secrets.broker_jwt_BFB8F8BC_D617_484A_9A4E_E9B98AB4E5BC }} - SERVICE_PROJECT: ${{ env.SERVICE_PROJECT }} - SERVICE_NAME: ${{ env.SERVICE_NAME }} - GITHUB_SHA: ${{ github.sha }} - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 - fetch-tags: true - ref: ${{ github.ref }} - - name: Set up Java - uses: actions/setup-java@v4 - with: - java-version: '8' - distribution: 'temurin' - cache: maven - - name: Set download URL - id: set-download-url - run: | - sudo apt-get -qq install libxml2-utils - GROUP_ID=$(mvn help:evaluate -Dexpression=project.groupId -q -DforceStdout --file pom.xml) - GROUP_ID_PATH="${GROUP_ID//.//}" - PACKAGE_TYPE=$(mvn help:evaluate -Dexpression=project.packaging -q -DforceStdout --file pom.xml) - curl -LO "${PACKAGE_REPO}/${GROUP_ID_PATH}/${SERVICE_NAME}/${PROJECT_VERSION}/maven-metadata.xml" -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" - TIMESTAMP=$(xmllint --xpath '//metadata/versioning/snapshot/timestamp/text()' maven-metadata.xml) - BUILD_NUMBER=$(xmllint --xpath '//metadata/versioning/snapshot/buildNumber/text()' maven-metadata.xml) - SNAPSHOT_VERSION="${PROJECT_VERSION//SNAPSHOT/$TIMESTAMP-$BUILD_NUMBER}" - ARTIFACT_NAME="${SERVICE_NAME}-${SNAPSHOT_VERSION}.${PACKAGE_TYPE}" - DOWNLOAD_URL="${PACKAGE_REPO}/${GROUP_ID_PATH}/${SERVICE_NAME}/${PROJECT_VERSION}/${ARTIFACT_NAME}" - echo "${DOWNLOAD_URL}" - echo "download_url=$(echo ${DOWNLOAD_URL})" >> $GITHUB_OUTPUT - env: - SERVICE_NAME: ${{ env.SERVICE_NAME }} - PROJECT_VERSION: ${{ steps.set-build-output.outputs.project_version }} - PACKAGE_REPO: ${{ env.PACKAGE_REPO }} - deploy-tag: - name: Deploy release version - if: ${{ startsWith(github.ref, 'refs/tags/') }} - runs-on: ubuntu-latest - needs: check_token_expiration - outputs: - project_version: ${{ steps.set-tag-output.outputs.project_version }} - build_guid: ${{ steps.set-tag-output.outputs.build_guid }} - build_number: ${{ steps.set-tag-output.outputs.build_number }} - artifact_name: ${{ steps.set-tag-output.outputs.artifact_name }} - artifact_sha256: ${{ steps.set-tag-output.outputs.artifact_sha256 }} - download_url: ${{ steps.set-download-url.outputs.download_url }} - steps: - - name: Set tag output - id: set-tag-output - run: | - TAG=${{ github.ref_name }} - PROJECT_VERSION=${TAG#v} - RESPONSE=$(curl -s -X 'POST' \ - "${BROKER_URL}/v1/intention/search?where=%7B%22actions.action%22%3A%22package-build%22%2C%22actions.service.project%22%3A%22${SERVICE_PROJECT}%22%2C%22actions.service.name%22%3A%22${SERVICE_NAME}%22%2C%22actions.package.version%22%3A%22${PROJECT_VERSION}%22%7D&offset=0&limit=1" \ - -H 'accept: application/json' \ - -H 'Authorization: Bearer '"${BROKER_JWT}"'' \ - -d '') - if echo "$RESPONSE" | jq -e '.statusCode == 401' > /dev/null; then - echo "Status code is 401. This indicates an authorization error." - echo "Please check if your Broker Token is valid. Teams can generate a new one in Broker if needed." - echo "Link: https://broker.io.nrs.gov.bc.ca/browse/brokerAccount" - echo "Exiting..." - exit 1 - fi - echo "project_version=${PROJECT_VERSION}" >> $GITHUB_OUTPUT - echo "build_guid=$(echo ${RESPONSE} | jq -r '.data[].id')" >> $GITHUB_OUTPUT - echo "build_number=$(echo ${RESPONSE} | jq -r '.data[].actions[].package.buildNumber')" >> $GITHUB_OUTPUT - echo "artifact_name=$(echo ${RESPONSE} | jq -r '.data[].actions[].artifacts[].name')" >> $GITHUB_OUTPUT - artifact_checksum=$(echo ${RESPONSE} | jq -r '.data[].actions[].artifacts[].checksum') - echo "artifact_sha256=${artifact_checksum#sha256:}" >> $GITHUB_OUTPUT - env: - BROKER_URL: https://broker.io.nrs.gov.bc.ca - BROKER_JWT: ${{ secrets.broker_jwt_BFB8F8BC_D617_484A_9A4E_E9B98AB4E5BC }} - SERVICE_PROJECT: ${{ env.SERVICE_PROJECT }} - SERVICE_NAME: ${{ env.SERVICE_NAME }} - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 - fetch-tags: true - ref: ${{ github.ref }} - - name: Set up Java - uses: actions/setup-java@v4 - with: - java-version: '8' - distribution: 'temurin' - cache: maven - - name: Set download URL - id: set-download-url - run: | - sudo apt-get -qq install libxml2-utils - GROUP_ID=$(mvn help:evaluate -Dexpression=project.groupId -q -DforceStdout --file pom.xml) - GROUP_ID_PATH="${GROUP_ID//.//}" - PACKAGE_TYPE=$(mvn help:evaluate -Dexpression=project.packaging -q -DforceStdout --file pom.xml) - ARTIFACT_NAME="${SERVICE_NAME}-${PROJECT_VERSION}.${PACKAGE_TYPE}" - DOWNLOAD_URL="${PACKAGE_REPO}/${GROUP_ID_PATH}/${SERVICE_NAME}/${PROJECT_VERSION}/${ARTIFACT_NAME}" - echo "${DOWNLOAD_URL}" - echo "download_url=$(echo ${DOWNLOAD_URL})" >> $GITHUB_OUTPUT - env: - SERVICE_NAME: ${{ env.SERVICE_NAME }} - PROJECT_VERSION: ${{ steps.set-tag-output.outputs.project_version }} - PACKAGE_REPO: ${{ env.PACKAGE_REPO }} - submit-job: - name: Submit job - if: | - always() && - ((needs.deploy-build.result == 'success' && needs.deploy-tag.result == 'skipped') || - (needs.deploy-build.result == 'skipped' && needs.deploy-tag.result == 'success')) - needs: [deploy-build, deploy-tag] - runs-on: ubuntu-latest - steps: - - name: Submit a job to Jenkins - run: | - curl \ - --data-urlencode "token=${{ secrets.JENKINS_TOKEN }}" \ - --data-urlencode "githubToken=${{ secrets.GITHUB_TOKEN }}" \ - --data-urlencode "artifactSha256=${ARTIFACT_SHA256}" \ - --data-urlencode "projectVersion=${PROJECT_VERSION}" \ - --data-urlencode "gitBranch=${{ github.ref_name }}" \ - --data-urlencode "intentionId=${BUILD_GUID}" \ - --data-urlencode "gitTag=${{ (startsWith(github.ref, 'refs/tags/') && github.ref_name) || '' }}" \ - --data-urlencode "configBranch=${{ inputs.config_branch || '' }}" \ - --data-urlencode "downloadUrl=${DOWNLOAD_URL}" \ - --data-urlencode "downloadType=GITHUB" \ - -H "Connection: close" \ - ${{ env.URL }}/${{ env.JOB }} - env: - PROJECT_VERSION: ${{ needs.deploy-build.outputs.project_version || needs.deploy-tag.outputs.project_version }} - BUILD_GUID: ${{ needs.deploy-build.outputs.build_guid || needs.deploy-tag.outputs.build_guid }} - BUILD_NUMBER: ${{ needs.deploy-build.outputs.build_number || needs.deploy-tag.outputs.build_number }} - ARTIFACT_SHA256: ${{ needs.deploy-build.outputs.artifact_sha256 || needs.deploy-tag.outputs.artifact_sha256 }} - DOWNLOAD_URL: ${{ needs.deploy-build.outputs.download_url || needs.deploy-tag.outputs.download_url }} - # The automatically generated GitHub token will expire when the workflow ends. We need to wait so the job has time to clone the repo - # and download the package - - name: Sleep - run: sleep 90s - shell: bash diff --git a/app-config.yaml b/catalog-info.yaml similarity index 97% rename from app-config.yaml rename to catalog-info.yaml index 0571a49..673e9c4 100644 --- a/app-config.yaml +++ b/catalog-info.yaml @@ -22,3 +22,4 @@ metadata: playbook.io.nrs.gov.bc.ca/clientId: "BFB8F8BC_D617_484A_9A4E_E9B98AB4E5BC" playbook.io.nrs.gov.bc.ca/pomRoot: "" playbook.io.nrs.gov.bc.ca/altAppDirName: "" + license: Apache-2.0