Production Build and Deploy #752
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Deploy | |
on: | |
push: | |
branches: [main] | |
workflow_dispatch: | |
schedule: | |
- cron: "0 0 * * *" | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- name: TruffleHog OSS | |
uses: trufflesecurity/trufflehog@main | |
with: | |
path: ./ | |
base: ${{ github.ref }} | |
- uses: actions/setup-node@v2 | |
with: | |
node-version: "16" | |
- name: SSH Setup | |
uses: webfactory/[email protected] | |
with: | |
ssh-private-key: ${{ secrets.PRIVATE_DEPENDENCY }} | |
- name: Clone publicgoods-website-test | |
run: git clone [email protected]:DPGAlliance/DPGAlliance.github.io.git ../publicgoods-website-test | |
- name: Run static.bash | |
run: bash scripts/static.bash | |
# - name: Generating DPG's | |
# run: cd packages/automation && npm install && node generate_dpgs.js | |
# - name: Generating Nominees | |
# env: | |
# CLIENTID: ${{ secrets.CLIENTID}} | |
# CLIENTSECRET: ${{ secrets.CLIENTSECRET}} | |
# run: cd packages/automation && node generate_nominees.js | |
# - name: Downloading nominees.json file into packages/registry/src | |
# run: curl --location --request GET 'https://api.digitalpublicgoods.net/nominees/' -o packages/registry/src/nominees.json | |
- name: Run npm i at root for needed react-scripts package below | |
run: npm install | |
- name: Consolidating DPG's and nominees from new API for registry page table | |
run: cd packages/automation && node consolidate_data.js | |
- name: Generating registry, eligibility and map pages | |
run: cd packages/automation && node index.js | |
- name: Softlink required dependencies | |
run: | | |
ln -s ../../../../publicgoods-website-test/wp-includes/ packages/eligibility/public/wp-includes; | |
ln -s ../../../../publicgoods-website-test/wp-content/ packages/eligibility/public/wp-content; | |
ln -s ../../../../publicgoods-website-test/wp-includes/ packages/registry/public/wp-includes; | |
ln -s ../../../../publicgoods-website-test/wp-content/ packages/registry/public/wp-content; | |
ln -s ../../../../publicgoods-website-test/wp-includes/ packages/map/public/wp-includes; | |
ln -s ../../../../publicgoods-website-test/wp-content/ packages/map/public/wp-content; | |
ln -s ../../../../publicgoods-website-test/wp-includes/ packages/roadmap/public/wp-includes; | |
ln -s ../../../../publicgoods-website-test/wp-content/ packages/roadmap/public/wp-content; | |
- name: Build packages/eligibility | |
run: cd packages/eligibility && npm install && npm run build | |
- name: Build packages/registry | |
run: cd packages/registry && npm install && npm run build | |
#- name: Build packages/map | |
# run: cd packages/map && npm install && npm run build | |
# env: | |
# NEXT_PUBLIC_MAPBOX_TOKEN: ${{ secrets.NEXT_PUBLIC_MAPBOX_TOKEN }} | |
# NEXT_PUBLIC_SHEET_ID: ${{ secrets.NEXT_PUBLIC_SHEET_ID }} | |
- name: Build packages/roadmap | |
run: cd packages/roadmap && npm install && npm run build | |
- name: run movefiles.bash | |
run: bash scripts/moveFiles.bash | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: artifacts | |
path: /home/runner/work/publicgoods-scripts/publicgoods-website-test | |
push_to_artifactory: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download Artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: artifacts | |
path: artifacts${{ github.run_number}}/ | |
- name: Setup JFrog CLI | |
id: setup_JFrog_CLI | |
uses: jfrog/setup-jfrog-cli@v3 | |
env: | |
JF_URL: ${{ secrets.JF_URL }} | |
JF_USER: ${{secrets.JF_USER}} | |
JF_PASSWORD: ${{secrets.JF_PASSWORD}} | |
- name: Upload to Jfrog Artifactory | |
run: jf rt u "artifacts${{ github.run_number}}/*" dpga-website-artifacts --exclusions=".git/**" | |
deploy_to_test: | |
needs: push_to_artifactory | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Configuring commit Author | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "dpgabot" | |
- name: Setup JFrog CLI | |
id: setup_JFrog_CLI | |
uses: jfrog/setup-jfrog-cli@v3 | |
env: | |
JF_URL: ${{ secrets.JF_URL }} | |
JF_USER: ${{secrets.JF_USER}} | |
JF_PASSWORD: ${{secrets.JF_PASSWORD}} | |
- name: Download Artifacts from Artifactory | |
run: jf rt dl "dpga-website-artifacts/artifacts${{github.run_number}}/*" artifacts/ | |
- name: Checkout Test Repository | |
uses: actions/checkout@v2 | |
with: | |
repository: DPGAlliance/DPGAlliance.github.io | |
path: "testenv" | |
token: ${{secrets.GITHUBTOKEN }} | |
- name: Push to Test Environment | |
run: | | |
cp -r artifacts/artifacts${{github.run_number}}/* testenv/ | |
cd testenv | |
find . -name '*.html' -exec sed -i -e "s,https://sourcewp.digitalpublicgoods.net,https://dpgalliance.github.io/,g" {} \; | |
touch .nojekyll | |
git remote set-url origin https://github.com/DPGAlliance/DPGAlliance.github.io.git | |
git add . | |
git commit -am "BLD: $GITHUB_SHA" || true | |
git push --set-upstream origin main | |
deploy_to_prod: | |
needs: deploy_to_test | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Configuring commit Author | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "dpgabot" | |
- name: Setup JFrog CLI | |
id: setup_JFrog_CLI | |
uses: jfrog/setup-jfrog-cli@v3 | |
env: | |
JF_URL: ${{ secrets.JF_URL }} | |
JF_USER: ${{secrets.JF_USER}} | |
JF_PASSWORD: ${{secrets.JF_PASSWORD}} | |
- name: Download Artifacts from Artifactory | |
run: jf rt dl "dpga-website-artifacts/artifacts${{github.run_number}}/*" artifacts/ | |
- name: Checkout Prod Repository | |
uses: actions/checkout@v2 | |
with: | |
repository: DPGAlliance/publicgoods-website | |
path: "prodenv" | |
token: ${{secrets.GITHUBTOKEN }} | |
- name: Push to Production Environment | |
run: | | |
cp -r artifacts/artifacts${{github.run_number}}/* prodenv/ | |
cd prodenv | |
find . -name '*.html' -exec sed -i -e "s,https://sourcewp.digitalpublicgoods.net,https://digitalpublicgoods.net,g" {} \; | |
touch .nojekyll | |
git remote set-url origin https://github.com/DPGAlliance/publicgoods-website.git | |
git add . | |
git commit -am "BLD: $GITHUB_SHA" || true | |
git push --set-upstream origin main | |
artifactory_cleanup: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Setup JFrog CLI | |
id: setup_JFrog_CLI | |
uses: jfrog/setup-jfrog-cli@v3 | |
env: | |
JF_URL: ${{ secrets.JF_URL }} | |
JF_USER: ${{secrets.JF_USER}} | |
JF_PASSWORD: ${{secrets.JF_PASSWORD}} | |
- name: Install cleanup plugin | |
run: jf plugin install rt-cleanup | |
- name: Run cleanup | |
run: jf rt-cleanup clean dpga-website-artifacts --time-unit=day --no-dl=14 |