You will want to carefully read up on views integration if you have civicrm in a separate DB from drupal before following these instructions.http://wiki.civicrm.org/confluence/display/CRMDOC/Views2+Integration+Module
There have been many forum posts and general help requests to assist in pulling CiviEvents into Drupal's calendar. There are multiple ways of doing this. Below you will find different options that are available. Make sure to read the 'Use this option if' section and minimum requirements to help you decide what's best for you.
This option requires the following:
* On your drupal site, navigate to Administer > Site Building > Views
Once enabled, if you would like to customize the view:
You want the title of the event to be clickable and take you to the event information page.
The original blog post by jalama that explains the reasoning behind doing this and another set of instructions on how. http://civicrm.org/node/557
This option requires the following:
This section is taken from a combination of different postings on drupal.org and forum.civicrm.org. These original links are posted below in the more resources area.
1. Enable the following modules and sub-modules: CCK, Calendar, Calendar iCal, Date, Date API, Date Timezone, FeedAPI Mapper, iCal parser, FeedAPI, FeedAPI Node, Views, Views UI. Then browse to Administer > Users > Permissions and make sure you have administrative priviledges for each of the above modules.
2. Decide what content type will be used for nodes imported from your iCal feed. It can be a separate content type for each feed, or they can be combined into other content types. Make sure the content type you select has a date field that can be used for the iCal date, plus fields for any other iCal information that will be imported. If you would like to include the link to register in this node, you will also want to have CCK Link module enabled and installed, and your content type should include a field for this.
3. Decide if you are going to use the 'Feed' content type or create a new one to be the container for your CiviEvent feed. If you create a new one: Create a new content type for iCal feeds. Make sure that "Refresh feed on creation" is unchecked. Under "FeedAPI", check that this is a content type for downloading feeds to your site. Scroll down and under "Parser Common iCal Syndication", check that you want to enable the ical parser for this feed. Under "FeedAPI Node", check the box to enable the feedapi_node processor on this feed and make sure the content type from Step 2 is selected.
4. Go to CiviCRM > Event > Administer Events (civicrm/admin/event) and copy the link location (right click in Firefox) of the gray calendar icon (directly to the left of the GREEN iCAL icon - do not use the green ical icon, it will not work).
5. Go to 'Create Content' and create a new node using the feed content type from step 3. When you create the node, you will find a place to input the url of the feed from step 4 and make sure the content type from Step 2 is selected in the node options.
6. Save the node. Once the feed node has been created, you will see a tab at the top where you can 'map' its data to the fields in your target content type. Click 'map' (If you don't see a 'map' tab, you need to apply proper permissions for the FeedAPI mapper module at Administer > Users > Permissions).
7. Scroll way down and look for 'options->VEVENT:' and map it to 'field_** (date*): iCal VEVENT' (the date field in your feed item content type). **Do NOT map any other options->VEVENT fields* You may map non-VEVENT fields to other fields in the target node. However, if you did in fact create a cck link field in your event content type from step 2, then you can also map 'options->VEVENT->URL' to the cck link field.
If you do not have any VEVENT field options, and instead just have 4 default fields like 'author' and 'created', then you have not input the feed url correctly in step 5. Things to consider:
8. Save. Once mapped, you can click on the 'Refresh' tab to add in the new feed items.
9. You can check the Content screen in the administration area to see that the nodes have been imported.
10. Now, if your interested, you can use Views to setup a calendar view of all the items from your feed. It's probably easiest to simply clone the default calendar view. You can do this in the Views UI.
11. When you are editing the view, make sure you include at least the 'from date' field of your CiviEvent content type from step 2. Then, under arguments, click the date argument and change the date field (scroll down on the view page if you don't see the fields) to 'Content: your_date_field_from_step_2 - From Date'
12. Make sure you change the path/url of the view under the page display so that it's not the same as teh default calendar view. Update and save the view.
13. Check out your view...you should see the CiviEvents populating! Now you can go back to the view and customize fields, content types, etc, however you please.
The above section was taken from a combination of areas:
Here are some posts relating to setting this up with Drupal 5: