name: Build test on: workflow_call: secrets: NPM_NEXUS_AUTH: required: true AWS_ACCESS_KEY_ID: required: true AWS_SECRET_ACCESS_KEY: required: true ACTIVE_MQ_ADMIN_PASSWORD: required: true BUILD_SCRIPT_NAME: required: true NODE_VERSION: required: true jobs: build: runs-on: ubuntu-latest permissions: contents: write packages: write steps: - name: Checkout repo uses: actions/checkout@v4 - name: Setup Node uses: actions/setup-node@v4 with: node-version: ${{ secrets.NODE_VERSION }} - name: Set current date as env variable run: echo "NOW=$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV - name: Run NPM install run: | echo 'https://devops.pravilanovait.hr/nexus/repository/npm-proxy/ //devops.pravilanovait.hr/nexus/repository/npm-proxy/:_auth='"$NPM_NEXUS_AUTH" > ~/.npmrc npm config set registry https://devops.pravilanovait.hr/nexus/repository/npm-proxy/ cat ~/.npmrc npm install env: NPM_NEXUS_AUTH: ${{ secrets.NPM_NEXUS_AUTH }} - name: Run NPM build run: npm run $BUILD_SCRIPT_NAME env: BUILD_SCRIPT_NAME: ${{ secrets.BUILD_SCRIPT_NAME }} - name: Setup AWS Cli run: | curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip -q awscliv2.zip ./aws/install env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - name: Prepare and deploy archive run: | PACKAGE_VERSION=$(node -p -e "require('./package.json').version") NAME=$(node -p -e "require('./package.json').name") FILENAME="$NAME-$PACKAGE_VERSION-$NOW.tar.gz" echo "ARCHIVE_NAME=$FILENAME" >> $GITHUB_ENV tar -czvf $FILENAME dist export ASSET_SHA256=$(sha256sum $FILENAME | awk '{print $1;}') aws codeartifact publish-package-version --region eu-west-1 --domain pravila --domain-owner 867459752380 --repository pravila-frontend \ --format generic --namespace hr.pravila --package $NAME --package-version $PACKAGE_VERSION-$NOW \ --asset-content $FILENAME --asset-name $FILENAME \ --asset-sha256 $ASSET_SHA256 env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - name: Push build finished event run: | VERSION=$(node -p -e "require('./package.json').version")-$NOW NAME=$(node -p -e "require('./package.json').name") echo "Triggering deploy for $NAME $VERSION" curl -XPOST -d 'body={"namespace":"hr.pravila","artifact":"'$NAME'","version":"'$VERSION'"}' -u admin:$ACTIVE_MQ_ADMIN_PASSWORD https://devops.pravilanovait.hr/activemq-api/message?destination=queue://builds env: ACTIVE_MQ_ADMIN_PASSWORD: ${{ secrets.ACTIVE_MQ_ADMIN_PASSWORD }} - name: Upload artifact uses: actions/upload-artifact@v3 with: name: ${{ env.ARCHIVE_NAME }} path: ${{ env.ARCHIVE_NAME }} retention-days: 5 - name: Print environment run: | echo "Environment: $GITHUB_ENV" echo "VITE_YFILES_LICENCE_KEY_DEVELOPMENT: $VITE_YFILES_LICENCE_KEY_DEVELOPMENT"