diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e51b01f63..c4fed931f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,7 +41,7 @@ jobs: ports: - 6379:6379 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@4 - name: Set up backend environment uses: maykinmedia/setup-django-backend@v1.1 with: @@ -79,13 +79,13 @@ jobs: # # defaults: # run: -# working-directory: ui +# working-directory: frontend # # steps: -# - uses: actions/checkout@v3 +# - uses: actions/checkout@4 # - uses: actions/setup-node@v3 # with: -# node-version-file: 'ui/.nvmrc' +# node-version-file: 'frontend/.nvmrc' # # - name: Build Javascript # run: | @@ -95,7 +95,7 @@ jobs: # - name: Store build artifact # uses: actions/upload-artifact@v3 # with: -# name: open-archiefbeheer-ui-build +# name: open-archiefbeheer-frontend-build # path: dist/ # retention-days: 1 @@ -104,7 +104,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@4 with: path: open-archiefbeheer @@ -120,89 +120,89 @@ jobs: run: pytest check_sphinx.py -v --tb=auto working-directory: open-archiefbeheer/backend/docs -# docker_build: -# name: Build Docker image -# runs-on: ubuntu-latest -# steps: -# - uses: actions/checkout@v3 -# -# - name: Set tag -# id: vars -# run: | -# # Strip git ref prefix from version -# VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') -# -# # Strip "v" prefix from tag name (if present at all) -# [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') -# -# # Use Docker `latest` tag convention -# [ "$VERSION" == "main" ] && VERSION=latest -# -# # PRs result in version 'merge' -> transform that into 'latest' -# [ "$VERSION" == "merge" ] && VERSION=latest -# -# echo "tag=${VERSION}" >> $GITHUB_OUTPUT -# echo "git_hash=${GITHUB_SHA}" >> $GITHUB_OUTPUT -# -# - name: Build the production Docker image -# run: | -# docker build . \ -# --tag $IMAGE_NAME:$RELEASE_VERSION \ -# --build-arg COMMIT_HASH=${{ steps.vars.outputs.git_hash }} \ -# --build-arg RELEASE=${{ steps.vars.outputs.tag }} \ -# env: -# RELEASE_VERSION: ${{ steps.vars.outputs.tag }} -# -# - run: docker image save -o image.tar $IMAGE_NAME:${{ steps.vars.outputs.tag }} -# - name: Store image artifact -# uses: actions/upload-artifact@v3 -# with: -# name: docker-image -# path: image.tar -# retention-days: 1 -# -# docker_push: -# needs: -# - backend-tests -# - docker_build -# -# name: Push Docker image -# runs-on: ubuntu-latest -# if: github.event_name == 'push' # Exclude PRs -# -# steps: -# # This will include the updated OAS (if updated) from the update-oas job. -# - uses: actions/checkout@v3 -# -# - name: Download built image -# uses: actions/download-artifact@v3 -# with: -# name: docker-image -# -# - name: Set tag -# id: vars -# run: | -# # Strip git ref prefix from version -# VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') -# -# # Strip "v" prefix from tag name (if present at all) -# [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') -# -# # Use Docker `latest` tag convention -# [ "$VERSION" == "main" ] && VERSION=latest -# -# echo "tag=${VERSION}" >> $GITHUB_OUTPUT -# -# - name: Load image -# run: | -# docker image load -i image.tar -# -# - name: Log into registry -# run: -# echo "${{ secrets.DOCKER_TOKEN }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} -# --password-stdin -# -# - name: Push the Docker image (production) -# run: docker push $IMAGE_NAME:$RELEASE_VERSION -# env: -# RELEASE_VERSION: ${{ steps.vars.outputs.tag }} + docker_build: + name: Build Docker image + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@4 + + - name: Set tag + id: vars + run: | + # Strip git ref prefix from version + VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') + + # Strip "v" prefix from tag name (if present at all) + [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') + + # Use Docker `latest` tag convention + [ "$VERSION" == "main" ] && VERSION=latest + + # PRs result in version 'merge' -> transform that into 'latest' + [ "$VERSION" == "merge" ] && VERSION=latest + + echo "tag=${VERSION}" >> $GITHUB_OUTPUT + echo "git_hash=${GITHUB_SHA}" >> $GITHUB_OUTPUT + + - name: Build the production Docker image + run: | + docker build . \ + --tag $IMAGE_NAME:$RELEASE_VERSION \ + --build-arg COMMIT_HASH=${{ steps.vars.outputs.git_hash }} \ + --build-arg RELEASE=${{ steps.vars.outputs.tag }} \ + env: + RELEASE_VERSION: ${{ steps.vars.outputs.tag }} + + - run: docker image save -o image.tar $IMAGE_NAME:${{ steps.vars.outputs.tag }} + - name: Store image artifact + uses: actions/upload-artifact@v3 + with: + name: docker-image + path: image.tar + retention-days: 1 + + docker_push: + needs: + - backend-tests + - docker_build + + name: Push Docker image + runs-on: ubuntu-latest + if: github.event_name == 'push' # Exclude PRs + + steps: + # This will include the updated OAS (if updated) from the update-oas job. + - uses: actions/checkout@4 + + - name: Download built image + uses: actions/download-artifact@v3 + with: + name: docker-image + + - name: Set tag + id: vars + run: | + # Strip git ref prefix from version + VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') + + # Strip "v" prefix from tag name (if present at all) + [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') + + # Use Docker `latest` tag convention + [ "$VERSION" == "main" ] && VERSION=latest + + echo "tag=${VERSION}" >> $GITHUB_OUTPUT + + - name: Load image + run: | + docker image load -i image.tar + + - name: Log into registry + run: + echo "${{ secrets.DOCKER_TOKEN }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} + --password-stdin + + - name: Push the Docker image (production) + run: docker push $IMAGE_NAME:$RELEASE_VERSION + env: + RELEASE_VERSION: ${{ steps.vars.outputs.tag }}