From cbaab51d29cfd905467e4e854663e1d820ba1e55 Mon Sep 17 00:00:00 2001 From: Vanessasaurus <814322+vsoch@users.noreply.github.com> Date: Tue, 31 Aug 2021 12:12:45 -0600 Subject: [PATCH] First shot at adding/testing github workflow to update containers. (#1) * first shot at adding/testing github workflow to update containers. After this we will want to have builds for all the newly generated (or changed) files, but just to test. Only on merge will they be build -> deploy Signed-off-by: vsoch --- .github/workflows/main.yaml | 109 ++++++++++++++++++++++++++++++++++++ .gitignore | 2 + img/rse-radiuss-docker.png | Bin 18545 -> 19876 bytes ubuntu/20.04/Dockerfile | 8 +-- ubuntu/uptodate.yaml | 13 +++++ 5 files changed, 128 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/main.yaml create mode 100644 .gitignore create mode 100644 ubuntu/uptodate.yaml diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 0000000..4820424 --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,109 @@ +name: Docker Updates + +# TODO this will be a regularly run job to update images +# TODO we need an easy way to detect new and changes files in the PR and then +# put them into a build matrix +on: + pull_request: [] + push: + branches: + - main + +jobs: + update: + runs-on: ubuntu-latest + outputs: + dockerfile_matrix: ${{ steps.dockerfile_check.outputs.dockerfile_matrix }} + steps: + - name: Checkout Actions Repository + uses: actions/checkout@v2 + + - name: Add new Dockerfiles for build + uses: vsoch/uptodate@main + with: + root: . + parser: dockerhierarchy + + - name: Update existing Dockerfile hashes + uses: vsoch/uptodate@main + id: dockerfile_check + with: + root: . + parser: dockerfile + + build: + needs: + - update + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + result: ${{ fromJson(needs.update.outputs.dockerfile_matrix) }} + + name: "Build ${{ matrix.result.name }}" + steps: + - name: Checkout Repository + uses: actions/checkout@v2 + + - name: GHCR Login + if: (github.event_name != 'pull_request') + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ secrets.GHCR_USERNAME }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Make Space For Build + run: | + sudo rm -rf /usr/share/dotnet + sudo rm -rf /opt/ghc + + # This currently has a lot of extra prints for debugging + - name: Build ${{ matrix.result.name }} + id: builder + run: | + basedir=$(dirname ${{ matrix.result.name }}) + printf "Base directory is ${basedir}\n" + dockerfile=$(basename ${{ matrix.result.name }}) + printf "Dockerfile basename is ${dockerfile}\n" + tag=$(basename ${basedir}) + printf "Tag is ${tag}\n" + container=$(basename $(dirname $basedir)) + printf "Container is ${container}\n" + cat ${{ matrix.result.name }} + cd $basedir + docker build -f Dockerfile -t ghcr.io/rse-radiuss/${container}:${tag} . + echo ::set-output name=container::ghcr.io/rse-radiuss/${container}:${tag} + # TODO this and size should be saved to site / gh-pages, for something like autamus librarian! + + # We will test out, if it's a push to main, pushing updated recipes + # This should not trigger a second time, since the token is not a PAT + - name: Update Recipes + if: (github.event_name != 'pull_request') + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + printf "GitHub Actor: ${GITHUB_ACTOR}\n" + git config --global user.name "github-actions" + git config --global user.email "github-actions@users.noreply.github.com" + git add . + git status | grep "modified\|new file" + if [ $? -eq 0 ]; then + printf "Changes\n" + git commit -m "Automated push to update containers $(date '+%Y-%m-%d')" || exit 0 + git push origin main + else + printf "No changes\n" + fi + + - name: Deploy Container + if: (github.event_name != 'pull_request') + env: + container: ${{ steps.builder.outputs.container }} + run: | + docker images + printf "docker push ${{ env.container }} --all-tags\n" + docker push ${{ env.container }} --all-tags diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7bd80db --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env +env diff --git a/img/rse-radiuss-docker.png b/img/rse-radiuss-docker.png index 62bac6a5b106fedb954b16d0dc6eeb75de3c1015..a36579b404886ca3f2cdc95bec674a4fb68b3d26 100644 GIT binary patch literal 19876 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 literal 18545 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