diff --git a/.github/dependency_update_template.md b/.github/dependency_update_template.md new file mode 100644 index 0000000..4e25518 --- /dev/null +++ b/.github/dependency_update_template.md @@ -0,0 +1,14 @@ +# Overview + +Monthly dependency updates + +## NPM + +``` +NPM_SUMMARY +``` +## Bundler + +``` +BUNDLER_SUMMARY +``` diff --git a/.github/workflows/dependency-update.yml b/.github/workflows/dependency-update.yml new file mode 100644 index 0000000..41411fd --- /dev/null +++ b/.github/workflows/dependency-update.yml @@ -0,0 +1,91 @@ +name: Update dependencies + +on: + workflow_dispatch: + schedule: + - cron: '0 8 1 * *' #8AM first of the month + + +jobs: + update: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Create .env file + run: cat env.* > .env + - name: Load .env file + uses: xom9ikk/dotenv@v2 + - name: Set up Ruby 3.3 + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.3' + env: + BUNDLE_RUBYGEMS__PKG__GITHUB__COM: ${{ secrets.GITHUB_TOKEN }} + - name: Get gems to update + continue-on-error: true + run: bundle outdated --only-explicit > /tmp/bundle_summary.txt + - name: Update bundler + run: bundle update --bundler + - name: Update gems + run: bundle update + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: '20.x' + - name: get npm summary + continue-on-error: true + run: | + npm install + npm outdated > /tmp/npm_summary.txt + - name: cat pr body + run: cat /tmp/npm_summary.txt + - name: Update node dependencies + run: | + npx -p npm-check-updates ncu -u + npm install + npm list + - name: Run tests + run: bundle exec rspec + - name: generate pr body + run: | + sed $'/BUNDLER_SUMMARY/{r /tmp/bundle_summary.txt\nd}' .github/dependency_update_template.md > /tmp/pr_body_first.md + sed $'/NPM_SUMMARY/{r /tmp/npm_summary.txt\nd}' /tmp/pr_body_first.md > /tmp/pr_body.md + - name: Get PR title + run: echo "PR_TITLE=$(date +'%B %Y') dependency updates" >> $GITHUB_ENV + - name: Create Pull Request + id: cpr + uses: peter-evans/create-pull-request@v6 + with: + commit-message: "Update dependencies" + title: ${{ env.PR_TITLE }} + body-path: /tmp/pr_body.md + assignees: niquerio, erinesullivan + - name: Get PR outputs + if: ${{ steps.cpr.outputs.pull-request-number }} + run: | + echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}" + echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}" + echo "SHA=${{ steps.cpr.outputs.pull-request-head-sha }}" >> $GITHUB_OUTPUT + + + build-unstable: + needs: update + name: Build unstable ${{ needs.update.outputs.SHA }} + uses: mlibrary/platform-engineering-workflows/.github/workflows/build-unstable.yml@v1 + with: + image_name: ${{ vars.IMAGE_NAME }} + tag: ${{ needs.update.outputs.SHA }} + dockerfile: Dockerfile + secrets: inherit + + deploy-unstable: + needs: build-unstable + name: Deploy to workshop + uses: mlibrary/platform-engineering-workflows/.github/workflows/deploy.yml@v1 + with: + image: ${{ needs.build-unstable.outputs.image }} + file: environments/browse/workshop/web-image.txt + CONFIG_REPO_RW_APP_ID: ${{ vars.CONFIG_REPO_RW_APP_ID }} + CONFIG_REPO_FULL_NAME: ${{ vars.CONFIG_REPO_FULL_NAME }} + secrets: inherit +