Site Progress
Part 1:Create a Professional Resume Website with ChatGPT's Assistance
- Initial Setup:
- Provided an overview of my background and skills for the resume website.
- HTML Structure:
- Created the basic HTML structure for the resume website, including sections for the header, sidebar, main content, and footer.
- Header Customization:
- Adjusted the header layout to include a menu button on the left and my name, title, and email on the right.
- Centered the "John S W Hawkes" title within the header.
- CSS Styling:
- Applied general styling for the body, header, sidebar, main content, and footer.
- Customized colors, fonts, and layout using CSS.
- Ensured the header and footer have a similar style with gradient backgrounds.
- Flexbox Adjustments:
- Used Flexbox to align elements within the header and position them appropriately.
- Centered the main title in the header and aligned other elements to the right and left as needed.
- Content Addition:
- Added sections for about me, experience, certifications, and skills.
- Included details for each section based on your professional background.
- Responsive Design:
- Implemented media queries for responsive design, ensuring the website looks good on various screen sizes.
- Final Touches:
- Fixed any CSS issues and ensured the final layout matched your requirements.
Part 2: Deploy a Website Using Azure Services
- Created a Storage Account:
- Created a new Storage Account in Azure portal.
- Configured it for "Blob storage" and selected "Hot" as the performance tier.
- Enabled Static Website Hosting:
- Enabled static website hosting in the Storage Account settings.
- Obtained the Primary endpoint URL for accessing the website.
- Uploaded Website Files:
- Uploaded website files (HTML, CSS, JavaScript, etc.) to the `$web` container within the Storage Account using Azure Storage Explorer or Azure portal.
- Configured Azure Front Door:
- Created an Azure Front Door instance in Azure portal.
- Added a frontend host (`www.jswhawkes.co.uk`) for the custom domain.
- Created a backend pool with the Storage Account's Primary endpoint URL.
- Configured routing rules to direct traffic from the custom domain to the backend pool.
- Configured HTTPS with Azure Front Door:
- Enabled HTTPS for the custom domain using Azure-managed certificates.
- Selected the minimum TLS version required (e.g., TLS 1.2).
- Validated Domain Ownership:
- Completed DNS verification as prompted by Azure Front Door for `www.jswhawkes.co.uk`.
- Waited for domain validation status to change from pending to verified.
- Tested and Verified:
- Tested access to the website using `https://www.jswhawkes.co.uk` to ensure proper functionality and secure HTTPS connection.
Part 3: Exploring Azure Front Door Costs and Moving to Azure CDN
- Reviewed Azure Front Door costs using Azure Cost Management: Took a close look at what it was costing to use Azure Front Door.
- Checked billing details and cost trends: Examined the fine print on bills and how costs were changing over time.
- Considered Azure CDN as a cheaper option for delivering content: Looked into Azure CDN to see if it could save some money
- Set up a new Azure CDN profile: Started a new Azure CDN profile to prepare for the switch.
- Connected CDN endpoints to Azure Storage: Replaced the azure front door with the new Azure CDN by linking the CDN endpoint with Azure Storage.
- Adjusted caching rules to make content delivery more efficient: Fine-tuned caching settings to speed up how content got to users and make the server work less.
- Watched spending after moving to Azure CDN: Used Azure Cost Management to keep an eye on how much was being spent once the switch was made.
- Compared costs before and after switching: Now I am spending sufficiently less.
Part 4: Setting Up CI/CD using GitHub Actions for jswhawkes.co.uk
- Created Github Repo: Creaated a Github Repo for jswhawkes-frontend
- Created a service principal: Generated a service principal with the necessary permissions for Azure resource management.
- Assigned CDN Endpoint Contributor role: Allocated the CDN Endpoint Contributor role to the service principal to enable management of Azure CDN endpoints.
- Added Azure credentials to GitHub Secrets: Safely stored Azure credentials within GitHub Secrets for secure access during the CI/CD workflow.
- Established .github/workflows directory: Created a dedicated directory (`/.github/workflows`) within the GitHub repository for housing GitHub Actions workflows.
- Created deploy.yml: Developed a YAML file (`deploy.yml`) within the workflows directory to define the GitHub Actions workflow for deployment.
- Configured GitHub Actions workflow: Detailed configuration included:
- Cleared the runner temp directory.
- Checked out the latest code from the repository.
- Set up Azure CLI environment.
- Logged in to Azure using the service principal credentials.
- Uploaded updated website files to Azure Storage.
- Purged the Azure CDN endpoint to ensure content freshness.
- Adjusted permissions and roles: Made necessary adjustments to permissions and roles to resolve any authorization issues encountered during setup.
Part 5: Creating a Budget for jswhawkes Website in Azure
- Created Budget: Set up sa new budget with an amount of 30 for the jswhawkes website.
- Configured Alerts:
- Set 25% threshold at 7.5.
- Set 50% threshold at 15.
- Set 100% threshold at 30.
- Added Email Notifications: Added email addresses to receive alerts.
- Verified Setup: Checked that the budget and alert settings were correctly applied.
Part 6: Adding a Visitor Counter to My Website
- Created Azure Function: Set up an HTTP-triggered Azure Function to track and return visitor counts.
- Connected to Cosmos DB: Configured Cosmos DB to store daily visitor counts with auto-increment logic.
- Deployed Function: Deployed the function to Azure and verified the API endpoint.
- Integrated Frontend: Added a `` to display the counter and used JavaScript to fetch and display the count.
- Configured CORS: Allowed requests only from `https://www.jswhawkes.co.uk` for security.
- Tested and Debugged: Fixed response format and verified the counter updated correctly on the site.