diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml new file mode 100644 index 0000000000..0f582c2a89 --- /dev/null +++ b/.github/workflows/deploy-production.yml @@ -0,0 +1,81 @@ +name: Deploy to docs-content.arduino.cc + +on: + workflow_dispatch: + push: + branches: + - main + - PNX-5069-deploy-to-docs-content + +concurrency: + group: deploy-production + cancel-in-progress: true + +permissions: + id-token: write + contents: read + +jobs: + build: + if: "github.repository == 'arduino/docs-content'" + runs-on: ubuntu-latest + environment: production + env: + REPO_ACCESS_TOKEN: ${{ secrets.REPO_ACCESS_TOKEN }} + APP_ENV: prod + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/setup-node@v4 + with: + node-version: 18 + cache: "npm" + cache-dependency-path: "**/package-lock.json" + + - name: Render Datasheets + run: cd ${GITHUB_WORKSPACE}/scripts/datasheet-rendering;./render-datasheets.sh + + - name: Copy Static Files + run: | + mkdir -p static/resources/datasheets static/resources/schematics static/resources/pinouts + find ./content/hardware -type f -name "*-schematics.pdf" -exec cp {} ./static/resources/schematics/ \; + find ./content/hardware -type f -name "*-datasheet.pdf" -exec cp {} ./static/resources/datasheets/ \; + find ./content/hardware -type f -name "*-full-pinout.pdf" -exec cp {} ./static/resources/pinouts/ \; + find ./content/hardware -type f -name "*-pinout.png" -exec cp {} ./static/resources/pinouts/ \; + find ./content/hardware -type f -name "*-step.zip" -exec cp {} ./static/resources/models/ \; + + - name: Gatsby main cache + uses: actions/cache@v4 + id: gatsby-cache-folder + with: + path: .cache + key: ${{ runner.os }}-cache-gatsby-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-cache-gatsby- + + - name: Gatsby Public Folder + uses: actions/cache@v4 + id: gatsby-public-folder + with: + path: public/ + key: ${{ runner.os }}-public-gatsby-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-public-gatsby- + + - run: npm install + - run: npm run build + + - name: Configure AWS credentials from Production account + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{ secrets.PRODUCTION_IAM_ROLE }} + aws-region: us-east-1 + + - name: Sync all cacheable assets + run: aws s3 sync --cache-control "public, max-age=31536000, immutable" --include "*.css" --include="*.js" --include="*.gif" --include="*.png" --include="*.svg" --exclude "*.html" --exclude="sw.js" --exclude="*.json" --delete public/ s3://${{ secrets.PRODUCTION_BUCKET_NAME }}/ + + - name: Sync all non-cacheable assets + # Don't cache any HTML or JSON file: they should always be up-to-dates + run: aws s3 sync --cache-control "public, max-age=0, must-revalidate" --include "*.html" --include="sw.js" --include="*.json" --include "*.css" --exclude="*.js" --exclude="*.gif" --exclude="*.png" --exclude="*.svg" --delete public/ s3://${{ secrets.PRODUCTION_BUCKET_NAME }}/ diff --git a/.github/workflows/deploy-staging.yml b/.github/workflows/deploy-staging.yml index 8168a58610..429bcd67fc 100644 --- a/.github/workflows/deploy-staging.yml +++ b/.github/workflows/deploy-staging.yml @@ -5,7 +5,6 @@ on: push: branches: - ghaction - - PNX-5069-deploy-to-docs-content concurrency: group: deploy-staging