From 15ed21862dab55faeab70856fadd993696483298 Mon Sep 17 00:00:00 2001 From: Saejin Mahlau-Heinert Date: Wed, 4 Sep 2019 23:51:35 -0400 Subject: [PATCH 1/4] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 874261a..87c359c 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ on an assignment or project. ## Build -Simply run `./build.sh` to generate a new image. +Simply run `./build.sh` to generate a new image locally. ## Run From 63390a675bed7fe6a97473992cabc6d72868955a Mon Sep 17 00:00:00 2001 From: Saejin Mahlau-Heinert Date: Thu, 10 Sep 2020 21:19:03 -0400 Subject: [PATCH 2/4] Add github actions to check and release new PRs --- .github/workflows/check.yml | 20 ++++++++ .github/workflows/docker-publish.yml | 76 ++++++++++++++++++++++++++++ .github/workflows/release.yml | 43 ++++++++++++++++ .github/workflows/validate-pr.yml | 36 +++++++++++++ 4 files changed, 175 insertions(+) create mode 100644 .github/workflows/check.yml create mode 100644 .github/workflows/docker-publish.yml create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/validate-pr.yml diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 0000000..9c8ab9d --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,20 @@ +name: Check + +on: + - push + - pull_request + +jobs: + build: + name: Lint code + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Lint Dockerfile + run: | + docker run --rm -i hadolint/hadolint < Dockerfile + - name: Lint Markdown + run: | + sudo gem install mdl + mdl README.md diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 0000000..c309190 --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,76 @@ +name: Docker + +on: + push: + # Publish `master` as Docker `latest` image. + branches: + - master + + # Publish `v1.2.3` tags as releases. + tags: + - v* + + # Run tests for any PRs. + pull_request: + +env: + # TODO: Change variable to your image's name. + IMAGE_NAME: dockagator + +jobs: + # Run tests. + # See also https://docs.docker.com/docker-hub/builds/automated-testing/ + test-compile: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Build image + run: | + if [ -f docker-compose.test.yml ]; then + docker-compose --file docker-compose.test.yml build + docker-compose --file docker-compose.test.yml run sut + else + docker build . --file Dockerfile + fi + + # Push image to GitHub Packages. + # See also https://docs.docker.com/docker-hub/builds/ + push: + # Ensure test job passes before pushing image. + needs: test + + runs-on: ubuntu-latest + if: github.event_name == 'push' + + steps: + - uses: actions/checkout@v2 + + - name: Build image + run: docker build . --file Dockerfile --tag $IMAGE_NAME + + - name: Log into registry + run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login docker.pkg.github.com -u ${{ github.actor }} --password-stdin + + - name: Push image + run: | + IMAGE_ID=docker.pkg.github.com/${{ github.repository }}/$IMAGE_NAME + + # Change all uppercase to lowercase + IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') + + # Strip git ref prefix from version + VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') + + # Strip "v" prefix from tag name + [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') + + # Use Docker `latest` tag convention + [ "$VERSION" == "master" ] && VERSION=latest + + echo IMAGE_ID=$IMAGE_ID + echo VERSION=$VERSION + + docker tag $IMAGE_NAME $IMAGE_ID:$VERSION + docker push $IMAGE_ID:$VERSION diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..492c725 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,43 @@ +name: Create Release + +on: + push: + branches: + - master + +jobs: + bump-tag-version: + name: Bump and Tag Version + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: jefflinse/pr-semver-bump@v1 + name: Bump and Tag Version + id: bump-tag-version + with: + mode: bump + repo-token: ${{ secrets.GITHUB_TOKEN }} + major-label: major + minor-label: minor + patch-label: patch + require-release-notes: true + release-notes-prefix: "# Release notes" + with-v: true + - name: Print Released Metadata + run: | + echo Old Version: ${{ steps.bump-tag-version.outputs.old-version }} + echo New Version: ${{ steps.bump-tag-version.outputs.version }} + echo Release Notes: ${{ steps.bump-tag-version.outputs.release-notes }} + - name: Create Release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ steps.bump-tag-version.outputs.version }} + release_name: Release ${{ steps.bump-tag-version.outputs.version }} + body: > + Release ${{ steps.bump-tag-version.outputs.version }} of the DockaGator docker image. + See [`README.md`](https://github.com/GatorEducator/dockagator/blob/${{ steps.bump-tag-version.outputs.version }}/README.md) + for example commands and more details. + draft: false + prerelease: false diff --git a/.github/workflows/validate-pr.yml b/.github/workflows/validate-pr.yml new file mode 100644 index 0000000..ecbb397 --- /dev/null +++ b/.github/workflows/validate-pr.yml @@ -0,0 +1,36 @@ +name: PR + +on: + pull_request: + types: + - labeled + - unlabeled + - opened + - edited + - reopened + - synchronize + - ready_for_review + +jobs: + check-pr: + name: Validate PR Release Label and Notes + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: jefflinse/pr-semver-bump@v1 + name: Validate PR Metadata + id: validate-pr-metadata + with: + mode: validate + repo-token: ${{ secrets.GITHUB_TOKEN }} + major-label: major + minor-label: minor + patch-label: patch + require-release-notes: true + release-notes-prefix: "# Release notes" + with-v: true + - name: Print Detected Metadata + run: | + echo Old Version: ${{ steps.validate-pr-metadata.outputs.old-version }} + echo New Version: ${{ steps.validate-pr-metadata.outputs.version }} + echo Release Notes: ${{ steps.validate-pr-metadata.outputs.release-notes }} From 3088a13d57594c8a8fe916d8b9df6e1b5d928f0a Mon Sep 17 00:00:00 2001 From: Saejin Mahlau-Heinert Date: Thu, 10 Sep 2020 21:20:10 -0400 Subject: [PATCH 3/4] Add pandoc binary package installation to Dockerfile --- Dockerfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Dockerfile b/Dockerfile index 929e970..1271bf5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,6 +13,11 @@ VOLUME ${PROJECT_DIR} ${GATORGRADER_DIR} RUN set -ex && echo "Installing packages..." && apk update \ && apk add --no-cache bash python3 git ruby-rdoc openjdk11 gradle npm \ && rm -rf /var/cache/apk/* \ + && wget -O /pandoc.tar.gz https://github.com/jgm/pandoc/releases/download/2.10.1/pandoc-2.10.1-linux-amd64.tar.gz \ + && tar -C /usr --strip-components 1 -xzvf /pandoc.tar.gz \ + && rm /pandoc.tar.gz \ + && echo "Testing pandoc..." \ + && /usr/bin/pandoc --version \ && gem install mdl \ && npm install -g htmlhint \ && python3 -m pip install --upgrade pip \ From d138875635e085472165e11548496fcf06cbf1e1 Mon Sep 17 00:00:00 2001 From: Saejin Mahlau-Heinert Date: Thu, 10 Sep 2020 21:23:16 -0400 Subject: [PATCH 4/4] Remove unneeded .travis.yml --- .travis.yml | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 5995e97..0000000 --- a/.travis.yml +++ /dev/null @@ -1,24 +0,0 @@ -language: generic -dist: xenial -os: linux - -install: - - gem install mdl - - docker pull hadolint/hadolint - -script: - - docker run --rm -i hadolint/hadolint < Dockerfile - - mdl README.md - -after_success: - - wget https://github.com/Michionlion/pr-tag-release/releases/latest/download/pr_tag_release.sh - - source pr_tag_release.sh - -# deploy to GitHub Releases on PR merge -deploy: - provider: releases - api_key: "$GITHUB_OAUTH_TOKEN" - skip_cleanup: true - on: - all_branches: true - condition: $DO_GITHUB_RELEASE = true