diff --git a/.github/workflows/frontend-build-prod.yml b/.github/workflows/frontend-build-prod.yml new file mode 100644 index 0000000..a85c9fe --- /dev/null +++ b/.github/workflows/frontend-build-prod.yml @@ -0,0 +1,79 @@ +name: Build test +on: +# push: +# branches: +# - 'master' +# - 'main' +# workflow_dispatch: + 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 + +jobs: + build: + + runs-on: ubuntu-latest + permissions: + contents: write + packages: write + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Setup Node 21 + uses: actions/setup-node@v4 + with: + node-version: 21 + + - 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 + + - 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_CA_USER }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_CA_PASSWORD }} + + - 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.tar.gz" + 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 \ + --asset-content $FILENAME --asset-name $FILENAME \ + --asset-sha256 $ASSET_SHA256 + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_CA_USER }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_CA_PASSWORD }} + + - name: Push build finished event + run: | + VERSION=$(node -p -e "require('./package.json').version") + 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 }} \ No newline at end of file diff --git a/.github/workflows/frontend-build-test.yml b/.github/workflows/frontend-build-test.yml new file mode 100644 index 0000000..02b038b --- /dev/null +++ b/.github/workflows/frontend-build-test.yml @@ -0,0 +1,83 @@ +name: Build test +on: +# push: +# branches: +# - '**' +# - '!master' +# - '!main' +# workflow_dispatch: + 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 + +jobs: + build: + + runs-on: ubuntu-latest + permissions: + contents: write + packages: write + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Setup Node 21 + uses: actions/setup-node@v4 + with: + node-version: 21 + + - 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 + + - 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_CA_USER }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_CA_PASSWORD }} + + - 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" + 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_CA_USER }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_CA_PASSWORD }} + + - 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 }} \ No newline at end of file