From c0af5181211d268d6dfb19928bae9833ec1be7f4 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Tue, 10 Sep 2019 11:37:21 +0200 Subject: [PATCH 1/2] Add a GitHub Actions workflow to build site using Zola --- .github/workflows/build-site.yml | 44 ++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 .github/workflows/build-site.yml diff --git a/.github/workflows/build-site.yml b/.github/workflows/build-site.yml new file mode 100644 index 00000000..03a2bbd7 --- /dev/null +++ b/.github/workflows/build-site.yml @@ -0,0 +1,44 @@ +name: Build Site + +on: [push, pull_request] + +jobs: + build_site: + name: "Zola Build" + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + + - name: 'Download Zola' + run: curl -sL https://github.com/getzola/zola/releases/download/v0.7.0/zola-v0.7.0-x86_64-unknown-linux-gnu.tar.gz | tar zxv + - name: "Install Python Tools" + run: python -m pip install --upgrade pip setuptools wheel + - name: 'Install Python Libraries' + run: python -m pip install --user -r requirements.txt + working-directory: "blog" + + - name: "Run before_build.py script" + run: python before_build.py + working-directory: "blog" + - name: "Build Site" + run: ../zola build + working-directory: "blog" + + - name: Upload Generated Site + uses: actions/upload-artifact@v1.0.0 + with: + name: generated_site + path: blog/public + + check_spelling: + name: "Check Spelling" + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + + - run: curl -L https://git.io/misspell | bash + name: "Install misspell" + - run: bin/misspell -error blog/content + name: "Check for common typos" From fa97ae36b586b8bbf008170a37e338a874cd5e28 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Tue, 10 Sep 2019 13:45:25 +0200 Subject: [PATCH 2/2] Add a deploy workflow --- .github/workflows/build-site.yml | 9 ++- .github/workflows/deploy-site.yml | 106 ++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/deploy-site.yml diff --git a/.github/workflows/build-site.yml b/.github/workflows/build-site.yml index 03a2bbd7..8a589fd6 100644 --- a/.github/workflows/build-site.yml +++ b/.github/workflows/build-site.yml @@ -1,6 +1,13 @@ name: Build Site -on: [push, pull_request] +on: + push: + branches: + - '*' + - '!master' # TODO re-enable when reusing artifacts for deploying + tags: + - '*' + pull_request: jobs: build_site: diff --git a/.github/workflows/deploy-site.yml b/.github/workflows/deploy-site.yml new file mode 100644 index 00000000..7efc38e6 --- /dev/null +++ b/.github/workflows/deploy-site.yml @@ -0,0 +1,106 @@ +name: Deploy Site + +on: + push: + branches: + - master + schedule: + - cron: '0 0 1/4 * *' # every 4 days + +jobs: + deploy_site: + name: "Deploy Generated Site" + runs-on: ubuntu-latest + needs: [build_site, check_spelling] + + steps: + - name: "Download Generated Site" + uses: actions/download-artifact@v1 + with: + name: generated_site + + - name: Setup SSH Keys and known_hosts + run: | + mkdir -p ~/.ssh + ssh-keyscan github.com >> ~/.ssh/known_hosts + ssh-agent -a $SSH_AUTH_SOCK > /dev/null + ssh-add - <<< "$deploy_key" + env: + SSH_AUTH_SOCK: /tmp/ssh_agent.sock + deploy_key: ${{ secrets.DEPLOY_SSH_KEY }} + + - name: "Clone blog_os_deploy Repo" + run: git clone git@github.com:phil-opp/blog_os_deploy.git --branch gh-pages + env: + SSH_AUTH_SOCK: /tmp/ssh_agent.sock + + - name: "Set Up Git Identity" + run: | + git config --local user.name "GitHub Actions Deploy" + git config --local user.email "github-actions-deploy@phil-opp.com" + working-directory: "blog_os_deploy" + + - name: "Delete Old Content" + run: "rm -r ./*" + working-directory: "blog_os_deploy" + + - name: "Add New Content" + run: cp -r generated_site/* blog_os_deploy + + - name: "Commit New Content" + run: | + git add . + git commit --allow-empty -m "Deploy ${GITHUB_SHA} + + Deploy of commit https://github.com/phil-opp/blog_os/commit/${GITHUB_SHA}" + working-directory: "blog_os_deploy" + + - name: "Show Changes" + run: "git show" + working-directory: "blog_os_deploy" + + - name: "Push Changes" + run: "git push" + working-directory: "blog_os_deploy" + + # TODO: Reuse artifact by `build-site` workflow when + # https://github.com/actions/download-artifact/issues/3 is resolved. + build_site: + name: "Zola Build" + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + + - name: 'Download Zola' + run: curl -sL https://github.com/getzola/zola/releases/download/v0.7.0/zola-v0.7.0-x86_64-unknown-linux-gnu.tar.gz | tar zxv + - name: "Install Python Tools" + run: python -m pip install --upgrade pip setuptools wheel + - name: 'Install Python Libraries' + run: python -m pip install --user -r requirements.txt + working-directory: "blog" + + - name: "Run before_build.py script" + run: python before_build.py + working-directory: "blog" + - name: "Build Site" + run: ../zola build + working-directory: "blog" + + - name: Upload Generated Site + uses: actions/upload-artifact@v1.0.0 + with: + name: generated_site + path: blog/public + + check_spelling: + name: "Check Spelling" + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + + - run: curl -L https://git.io/misspell | bash + name: "Install misspell" + - run: bin/misspell -error blog/content + name: "Check for common typos"