aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar MarkKoz <[email protected]>2019-06-23 11:40:37 -0700
committerGravatar MarkKoz <[email protected]>2019-06-29 20:05:35 -0700
commitb807bfb2f10ce03017d2f5af6b0c9f0789d86f60 (patch)
treec0d9d2d3d11ad3aa7bef0d996e3b58cd7e9e0625
parentMerge pull request #31 from python-discord/testing (diff)
Test artifact publishing
-rw-r--r--azure-pipelines.yml143
-rw-r--r--docker/base.Dockerfile27
2 files changed, 14 insertions, 156 deletions
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 98d64bf..356fac4 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -8,137 +8,18 @@ jobs:
vmImage: 'Ubuntu-16.04'
steps:
- - script: docker build -t pythondiscord/snekbox-base:latest -f docker/base.Dockerfile .
- displayName: 'Build Base Image'
-
- - script: |
- docker build -t pythondiscord/snekbox-venv:dev -f docker/venv.Dockerfile --build-arg DEV=1 .
- displayName: 'Build Development Image'
-
- - script: |
- docker run \
- -td \
- --name snekbox_test \
- --privileged \
- --network host \
- -h pdsnk-dev \
- -e PYTHONDONTWRITEBYTECODE=1 \
- -e PIPENV_PIPFILE="/snekbox/Pipfile" \
- -e ENV="${PWD}/scripts/.profile" \
- -v "${PWD}":"${PWD}" \
- -w "${PWD}"\
- --entrypoint /bin/ash \
- pythondiscord/snekbox-venv:dev
- displayName: 'Start Container'
-
- - script: |
- docker exec snekbox_test /bin/ash -c \
- 'pipenv run lint --format junit-xml --output-file test-lint.xml'
- displayName: 'Run Linter'
-
- - task: PublishTestResults@2
- condition: succeededOrFailed()
- displayName: 'Publish Lint Results'
- inputs:
- testResultsFiles: '**/test-lint.xml'
- testRunTitle: 'Lint Results'
-
- - script: sudo swapoff -a
- displayName: 'Disable swap memory'
-
- - script: |
- docker exec snekbox_test /bin/ash -c \
- 'pipenv run coverage run -m xmlrunner'
- displayName: 'Run Unit Tests'
-
- - task: PublishTestResults@2
- condition: succeededOrFailed()
- displayName: 'Publish Test Results'
- inputs:
- testResultsFiles: '**/TEST-*.xml'
- testRunTitle: 'Test Results'
-
- - script: |
- docker exec snekbox_test /bin/ash -c \
- 'pipenv run coverage xml'
- displayName: 'Generate Coverage Report'
-
- - task: PublishCodeCoverageResults@1
- displayName: 'Publish Coverage Results'
- condition: succeededOrFailed()
- inputs:
- codeCoverageTool: Cobertura
- summaryFileLocation: '**/coverage.xml'
-
-- job: build
- displayName: 'Build'
- dependsOn: test
-
- variables:
- BASE_CHANGED: true
- VENV_CHANGED: true
-
- steps:
- - task: Docker@1
- displayName: 'Login: Docker Hub'
-
- inputs:
- containerregistrytype: 'Container Registry'
- dockerRegistryEndpoint: 'DockerHub'
- command: 'login'
-
- - script: |
- REQUEST_URL="https://dev.azure.com/python-discord/${SYSTEM_TEAMPROJECTID}/_apis/build/builds?queryOrder=finishTimeDescending&resultFilter=succeeded&\$top=1&repositoryType=${BUILD_REPOSITORY_PROVIDER}&repositoryId=${BUILD_REPOSITORY_NAME}&branchName=${BUILD_SOURCEBRANCH}&api-version=5.0"
- echo "Retrieving previous build's commit using $REQUEST_URL"
- RESPONSE="$(curl -sSL "${REQUEST_URL}")"
-
- if [[ $BUILD_REASON = "PullRequest" ]]; then
- PREV_COMMIT="$(echo "${RESPONSE}" | grep -Po '"pr\.sourceSha"\s*:\s*"\K.*?[^\\](?="\s*[,}])')"
- if [[ -z $PREV_COMMIT ]]; then
- echo "Could not retrieve the previous build's commit. Falling back to the head of the target branch."
- PREV_COMMIT="origin/$SYSTEM_PULLREQUEST_TARGETBRANCH"
- fi
- else
- PREV_COMMIT="$(echo "${RESPONSE}" | grep -Po '"sourceVersion"\s*:\s*"\K.*?[^\\](?="\s*[,}])')"
- fi
-
- if [[ -n $PREV_COMMIT ]]; then
- echo "Using $PREV_COMMIT to compare diffs."
-
- if [[ -z "$(git diff $PREV_COMMIT -- docker/base.Dockerfile)" ]]; then
- echo "No changes detected in docker/base.Dockerfile. The base image will not be built."
- echo "##vso[task.setvariable variable=BASE_CHANGED]false"
+ - script: docker build -t pythondiscord/snekbox-base:latest -f docker/base.Dockerfile .
+ displayName: 'Build Base Image'
+
+ - script: |
+ id="$(docker images -q --no-trunc pythondiscord/snekbox-base:latest)"
+ if [[ -z "${id}" ]]; then
+ (>&2 echo 'failed to get ID of pythondiscord/snekbox-base:latest')
+ exit 1
fi
- if [[ -z "$(git diff $PREV_COMMIT -- docker/venv.Dockerfile Pipfile*)" ]]; then
- echo "No changes detected in docker/venv.Dockerfile or the Pipfiles. The venv image will not be built."
- echo "##vso[task.setvariable variable=VENV_CHANGED]false"
- fi
- else
- echo "No previous commit was retrieved. Either the previous build is too old and was deleted or the branch was empty before this build. All images will be built."
- fi
- displayName: 'Check Changed Files'
-
- - script: docker build -t pythondiscord/snekbox-base:latest -f docker/base.Dockerfile .
- displayName: 'Build Base Image'
- condition: and(succeeded(), eq(variables.BASE_CHANGED, 'true'))
-
- - script: docker build -t pythondiscord/snekbox-venv:latest -f docker/venv.Dockerfile .
- displayName: 'Build Virtual Environment Image'
- condition: and(succeeded(), or(eq(variables.BASE_CHANGED, 'true'), eq(variables.VENV_CHANGED, 'true')))
-
- - script: docker build -t pythondiscord/snekbox:latest -f docker/Dockerfile .
- displayName: 'Build Final Image'
- condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
-
- - script: docker push pythondiscord/snekbox-base:latest
- displayName: 'Push Base Image to Dockerhub'
- condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'), eq(variables.BASE_CHANGED, 'true'))
-
- - script: docker push pythondiscord/snekbox-venv:latest
- displayName: 'Push Virtual Environment Image to Dockerhub'
- condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'), or(eq(variables.BASE_CHANGED, 'true'), eq(variables.VENV_CHANGED, 'true')))
+ printf '%s' "${id}" >> base.sha256
+ displayName: 'Create Digest Artifact'
- - script: docker push pythondiscord/snekbox:latest
- displayName: 'Push Final Image to Dockerhub'
- condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
+ - publish: base.sha256
+ artifact: base_id
diff --git a/docker/base.Dockerfile b/docker/base.Dockerfile
index 19fc1b8..1f1b9a6 100644
--- a/docker/base.Dockerfile
+++ b/docker/base.Dockerfile
@@ -1,25 +1,2 @@
-FROM alpine:3.9.2 as builder
-RUN apk add --no-cache --update \
- bison \
- bsd-compat-headers \
- flex \
- g++ \
- gcc \
- git \
- libnl3-dev \
- linux-headers \
- make \
- protobuf-dev
-RUN git clone --depth=1 https://github.com/google/nsjail.git /nsjail
-WORKDIR /nsjail
-RUN make
-
-FROM python:3.7.3-alpine3.9
-ENV PIP_NO_CACHE_DIR=false
-RUN apk add --no-cache --update \
- libnl3 \
- libstdc++ \
- protobuf
-RUN pip install pipenv
-COPY --from=builder /nsjail/nsjail /usr/sbin/
-RUN chmod +x /usr/sbin/nsjail
+FROM alpine:3.9.2
+RUN echo hello